この Railscast に関する多くの投稿を見つけましたが、すべての提案が役に立ちませんでした。ビューでネストされたフォーム フィールドをレンダリングできましたが、コントローラーで呼び出した 3 つではなく、1 つだけです。送信すると、次のエラーが表示されます: 保護された属性を一括割り当てできません: 手がかり
Chapter.rb
class Chapter < ActiveRecord::Base
belongs_to :trail
has_many :clues, :dependent => :destroy
accepts_nested_attributes_for :clues
attr_accessible :asset, :assetkind, :description, :gate, :name, :trail, :trail_id, :cover
.
.
.
end
手がかり.rb
class Clue < ActiveRecord::Base
attr_accessible :chapter_id, :theclue, :typeof, :chapter
.
.
.
belongs_to :chapter
end
railcast では、:clues に相当するものを使用するように指示されており、これにより 3 つのフィールドがレンダリングされます。しかし、私の場合、フィールドはレンダリングされませんでした。代わりに @chapter.clues を使用すると、1 つだけがレンダリングされます。
新しい章を作るときの私のフォーム。
<h1>Add a New Chapter</h1>
<h3>Add To Trail : <%= @trail.title %></h3><br>
<%= form_for [@trail, @trail.chapters.build] do |f| %>
<h6>About the Chapter</h6>
<%= f.label :name, 'Chapter Name' %>
.
.
.
<h6>Progressing the Story</h6>
<%= f.fields_for @chapter.clues do |builder| %>
<p>
<%= builder.label :theclue, "Enter Clue" %>
<%= builder.text_area :theclue, :rows => 2 %>
</p>
<% end %>
.
.
.
<% end %>
私の chapters_controller.rb 新しい
class ChaptersController < ApplicationController
def new
@trail = Trail.find(params[:trail_id])
@chapter = Chapter.new
@title = "Chapter"
3.times { @chapter.clues.build }
logger.debug "CHAPTER!!!!!!!!!!!!new: am i in a trail? #{@trail.to_yaml}"
logger.debug "CHAPTER!!!!!!!!!!!!new: am i in a clue? #{@chapter.clues.to_yaml}"
end
私のログには 3 つの手がかりが表示されますが、属性は空です (no :id)。これは何か問題がある兆候ですか?したがって、ログには 3 つの手がかりオブジェクトが表示されますが、ビューには 1 つしか表示されません。
考え?私はすでに、stackoverflow に関する提案のおかげで、chapter.rb に追加しました。
attr_accessible :clues_attributes
運がなく、同じ動作とエラーがありました。
お時間をいただきありがとうございます