を存在している必要があり、私は次のモデルがあります:Railsの5トラブル
class Person < ApplicationRecord
has_many :interests, dependent: :destroy
accepts_nested_attributes_for :interests
validates_presence_of :email
validates_inclusion_of :gender, :in => %w(M F), message: "Gender can only be in M or F"
has_secure_password
def name
"#{first_name} #{last_name}"
end
def interests_concatenated
interests.map { |i| i.interest }.join(", ")
end
end
class Interest < ApplicationRecord
belongs_to :person
end
次のように私のコントローラは次のとおりです。次のように
class PeopleController < ApplicationController
def index
@person = Person.all
end
def new
@person = Person.new
@person.interests.build
end
def create
@person = Person.new(people_params)
if @person.save
session[:user_id] = @person.id
redirect_to(people_path)
else
flash = "Email or gender can't be blank!"
render 'new'
end
end
private
def people_params
params.require(:person).permit(:email, :first_name, :last_name, :gender, :password,:password_confirmation, interests_attributes: [:hobby])
end
end
私の形式は次のとおりです。
<%= form_for @person do |f| %>
<p>
<%= f.label :email %> <br>
<%= f.text_field :email %>
</p>
<p>
<%= f.label :first_name %> <br>
<%= f.text_field :first_name %>
</p>
<p>
<%= f.label :last_name %> <br>
<%= f.text_field :last_name %>
</p>
<p>
<%= f.label :gender %> <br>
<%= f.label(:gender_male, "Male") %>
<%= f.radio_button(:gender, "M") %> <br>
<%= f.label(:gender_female, "Female") %>
<%= f.radio_button(:gender, "F") %> <br>
</p>
<p>
<%= f.label :password %> <br>
<%= f.password_field :password %>
</p>
<p>
<%= f.label :password_confirmation %> <br>
<%= f.password_field :password_confirmation %>
</p>
<p>
<%= f.fields_for :interests do |i| %>
<%= i.label :hobby %>
<%= i.text_field :hobby %>
<% end %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
実行時のコンソールログは以下のとおりです。
なぜ機能していないのですか。パラメータとは何か関係ありますか?私は、フォームを送信するとここで
は、ログファイルです:
あなたは 'interested_attributes:[:hobby]'を試してみましたか? –
はい、実際にはinterest_attributes:[:hobby]コード内で、私がここに投稿したときにinterest_attributes [:hobby]に表示される理由はわかりません – MLZ
'@interests = @ person.interests.new'ではなくtry '@interests = @ person.interests.build'? –