ネストされたフォームフィールドの表示に関する問題
-
03-07-2019 - |
質問
Ryan Daigleのブログ投稿をガイドとして使用して、サイトにネストされたオブジェクトフォームを実装しようとしています( http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes )。何らかの理由で、ネストされたフォームフィールドはビューに表示されません。
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 |
に変更すると、フォームがレンダリングされますが、送信すると、 「不明な属性:ステップ」エラー。
私がやっていることは、チュートリアルと一致しているようです。何を確認すればよいですか?ありがとう。
解決
コントローラーで何が起こっていますか?私はまだチュートリアルを読んでいません。今すぐ(下に?)それをプルアップすることはできないようですが、記入するためにメモリにオブジェクトを構築していますか?
コントローラーの「新規」でアクション、あなたがいることを確認してください
@instruction = Instruction.new
@instruction.steps.build
これにより、メモリ内の Step
が&quot; placeholder&quot;としてインスタンス化されます。フォームに記入してください。 。 。少なくとも、これは accepts_nested_attributes_for
を使用するときに自分のコントローラーで行うことであり、うまく機能します。
それが機能するかどうかを教えてください。チュートリアルを作成したら、編集する必要があります
所属していません StackOverflow