0

Ich versuche zu lernen, wie Sie namespaced Routen verwenden.Rails 5, einfache Felder für mit Cocoon gem für verschachtelte Ressourcen

Ich habe ein Modell namens Vorschlag und ein anderes namens Innovation. Die Verbände sind:

Vorschlag

has_many :innovations 
    accepts_nested_attributes_for :innovations, reject_if: :all_blank, allow_destroy: true 

Innovation

belongs_to :proposal 

In meinem routes.rb, ich habe:

resources :proposals do 
    resources :innovations 

In meinen Vorschlägen Controller, ich habe:

def new 
    @proposal = Proposal.new 
    @proposal.innovations.build 

    # authorize @proposal 
    end 

    def edit 
    @proposal.innovations_build unless @proposal.innovations 

    end 

In meinem Vorschlagsformular versuche ich, die Formularfelder für das Innovationsmodell zu verschachteln.

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

Wenn ich das versuche, erhalte ich einen Fehler, der sagt:

undefined method `model_name' for nil:NilClass 

ich den gleichen Fehler, wenn ich versuche:

<%= f.simple_fields_for [@proposal, @innovations] do |f| %> 

Kann jemand sehen, was ich tun muss Um das Antragsformular zu erhalten, müssen die Felder für Innovationsformulare enthalten sein.

Antwort

0

Sie verwenden geschachtelte Attribute, sodass in diesem speziellen Fall keine verschachtelten Routen erforderlich sind. Sie können einfach schreiben

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

Dies wird die Form veröffentlichen, alle Innovationen enthält, auf die ProposalsController.

Verwandte Themen