0

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 %>
4

1 に答える 1

0

これを試して。ちょっと面倒だと思いますが、うまくいくかもしれません。

@pickem.result = @pickem.build_result if @pickem.result.blank?
于 2012-07-13T03:16:24.870 に答える