Rails 3.2 のネストされたフォームとの単純な 1 対 1 の関連付けがどのように機能するかを理解するには、少し助けが必要だと思います。ポイント フォームがあり、初めてアクセスすると、すべてが空の状態で読み込まれます。そして、すべてを保存すると、適切な外部キーさえあります。ここで、フォームをロードしてこのレコードを再度編集しようとすると、外部キー (results.pickem_id) が無効になり、フォームに何もロードされません。2 番目@pickem.build_result
に呼び出されると null になります。このフォームの編集を許可するにはどうすればよいですか? ここで正しい軌道に乗っているような気がするので、単純なものが欠けていることを願っています。関連するコード スニペットのみを含めましたが、必要に応じてさらに提供できます。
Pickem.rb
attr_accessible :result_attributes
has_one :result
accepts_nested_attributes_for :result
結果.rb
belongs_to :pickem
pickems_controller.rb
def update
@pickem = Pickem.find params[:id]
if @pickem.update_attributes params[:pickem]
redirect_to pickem_path(@pickem), :notice => 'The pickem has been successfully updated.'
else
render "edit"
end
end
def results #This is the results form
@pickem = Pickem.find params[:id]
@pickem.build_result #:pickem_id => params[:id]
end
results.html.erb
<%= simple_form_for @pickem, :html => {:class => "form-horizontal"} do |f| %>
<%= f.simple_fields_for :result do |r| %>
<%= r.input :pickem_id, :input_html => { :value => params[:id] }, :as => 'hidden' %>
<%= r.input :first_name, :label => 'First Name:' %>
<% end %>
<% end %>