我正在努力学习如何使用命名空间的路线。
我有一个叫做建议的模型,还有一个叫做创新的模型。这些协会是:
建议书
has_many :innovations
accepts_nested_attributes_for :innovations, reject_if: :all_blank, allow_destroy: true创新
belongs_to :proposal在我的routes.rb中,我有:
resources :proposals do
resources :innovations在我的提案负责人中,我有:
def new
@proposal = Proposal.new
@proposal.innovations.build
# authorize @proposal
end
def edit
@proposal.innovations_build unless @proposal.innovations
end在我的建议表格中,我试图为创新模式嵌套表单字段。
<%= f.simple_fields_for [@proposal, @innovation] do |f| %>
<%= f.error_notification %>
<%= render 'innovations/innovation_fields', f: f %>
<% end %>
<%= link_to_add_association 'Add another novel aspect', f, :innovations, partial: 'innovations/innovation_fields' %>
</div> 当我尝试这样做时,我会发现一个错误:
undefined method `model_name' for nil:NilClass当我尝试时,我也会遇到同样的错误:
<%= f.simple_fields_for [@proposal, @innovations] do |f| %>有人能看到我需要做什么才能使提案表格包括创新表单字段吗?
发布于 2016-11-06 14:33:23
您使用的是嵌套属性,因此在这种特殊情况下,不需要嵌套路由。你可以直接写
<%= f.simple_fields_for @proposal do |f| %>这将把包含所有创新的表单发布到ProposalsController。
https://stackoverflow.com/questions/40445039
复制相似问题