2016-09-06 4 views
6
existieren muss

ich nach dem Tutorial: http://www.amooma.de/screencasts/2015-01-22-nested_forms-rails-4.2/Rails verschachtelt Formfehler, Kind

Ich bin usign Rails 5.0.0.1

Aber wenn ich ein Hotel zu registrieren, scheint es, dass die Hotelkategorie vorhanden sein muss .

1 Fehler verboten dieses Hotel nicht gespeichert werden: Kategorien Hotel muss

existieren

My Hotel Modell:

class Hotel < ApplicationRecord 
    has_many :categories, dependent: :destroy 
    validates :name, presence: true 
    accepts_nested_attributes_for :categories, reject_if: proc { |attributes| attributes['name'].blank? }, allow_destroy: true 
end 

My Category Modell:

class Category < ApplicationRecord 
    belongs_to :hotel 
    validates :name, presence: true 
end 

My Hotel Controller:

def new 
    @hotel = Hotel.new 
    @hotel.categories.build 
end 

def hotel_params 
    params.require(:hotel).permit(:name, categories_attributes: [ :id,:name]) 
end 

Ende meiner _form.html.erb

Antwort

17

belongs_to Verhalten hat sich in rails >= 5.x geändert. Im Wesentlichen wird nun erwartet, dass der Datensatz belongs_to existiert, bevor er der anderen Seite der Assoziation zugewiesen wird. Sie müssen required :false passieren, während belongs_to in Ihrem Category Modell erklärt, wie folgt:

class Category < ApplicationRecord 
    belongs_to :hotel, required: false 
    validates :name, presence: true 
end 
+1

Danke für die Hilfe, sah ich, dass 'inverse_of :: categories' auch funktioniert. –

+2

Danke Dharam, das hat geholfen. Beachten Sie außerdem, dass "required: false" veraltet ist (Quelle: https://github.com/rails/rails/pull/18937). Besser verwenden 'gehört_zu: Hotel, optional: wahr' – htaidirt

Verwandte Themen