我发现了很多关于这个 Railscast 的帖子,但所有的建议都没有帮助我。我已经能够在视图中呈现一个嵌套的表单字段,但只有一个,而不是我在控制器中调用的 3 个。当我提交时,我收到错误:无法批量分配受保护的属性:线索
章节.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,它只呈现一个。
我制作新章节时的表格。
<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 条线索,但属性为空(没有:id)。这是有问题的迹象吗?因此,即使我的日志显示了 3 个线索对象,我的视图也只显示了一个。
想法?感谢关于 stackoverflow 的建议,我已经添加到 chapter.rb
attr_accessible :clues_attributes
并且没有运气,同样的行为和错误,无论有没有。
在此先感谢您的时间