0

我想了解如何使用命名空間路由。Rails 5,簡單字段用於嵌套資源的Cocoon gem

我有一個名爲Proposal的模型,另一個名爲Innovation。該協會是:

建議

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| %> 

任何人都可以看到什麼,我需要做的爲了讓提案形式包含創新形式領域?

回答

0

您正在使用嵌套屬性,因此在此特定情況下不需要嵌套路由。你可以只寫

<%= f.simple_fields_for @proposal do |f| %> 

這將發佈形式,包含所有的創新,給ProposalsController