0

Ryan Daigle のブログ投稿 ( http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-ネストされた属性)。何らかの理由で、ネストされたフォーム フィールドがビューに表示されません。

class Instruction < ActiveRecord::Base
  has_many :steps
  accepts_nested_attributes_for :steps
end

class Step < ActiveRecord::Base
  belongs_to :instruction
end

<% form_for @instruction do |instruction_form| %>
  <%= instruction_form.error_messages %>
  <p>
    <%= instruction_form.label :title %><br />
    <%= instruction_form.text_field :title %>
  </p>
  <p>
    <%= instruction_form.label :difficulty %><br />
    <%= instruction_form.text_field :difficulty %>
  </p>

<% instruction_form.fields_for :steps do |step_form| %>
    <%= step_form.label :explanation, 'Explanation: ' %>
    <%= step_form.text_field :explanation %>

<% end %>

  <p><%= instruction_form.submit "Submit" %></p>
<% end %>

に変更instruction_form.fields_for :steps do |step_form|するinstruction_form.fields_for :step do |step_form|と、フォームはレンダリングされますが、送信時に「不明な属性: ステップ」エラーが発生します。

私がやっていることはチュートリアルと一致しているようです。何を確認すればよいですか?ありがとう。

4

1 に答える 1

2

コントローラーで何が起こっていますか?私はまだチュートリアルを読んでおらず、今はそれを引き上げることができないようです (下へ?) が、記入するためにメモリ内のオブジェクトを構築していますか?

コントローラーの「新しい」アクションで、次のことを確認してください

@instruction = Instruction.new
@instruction.steps.build

Stepこれにより、フォームに記入するための「プレースホルダー」として、メモリ内でがインスタンス化されます。. . 少なくともこれは、を使用するときに自分のコントローラーで行うことでaccepts_nested_attributes_forあり、うまく機能します。

機能するかどうか教えてください。チュートリアルを取得できたら、これを編集する必要があるかもしれません

于 2009-05-04T23:42:51.260 に答える