2016-06-07 11 views
1

Schienen 3.2 Rubin 2.1.5Rendering Teilansicht in Fehlern führt

ich eine einzige Form für ein Ticket zu haben, versuchen, die eine Reihe von Abschnitten enthält.

Einer der sectios customer_info

In dem app/views/Tickets/show.html.slim genannt wird, ich habe:

= render 'tickets/sections/customer_info', locals: { customer_info: CustomerInfo.new, ticket: @ticket } 

und in meinem app/views/Tickets/sections/_customer_info.html.slim, ich habe:

= form_for customer_info do |f| 
    - f.hidden_field :ticket_id, :value => ticket.id 
    .form-horizontal-column.customer-info 
    .form-group 
     = f.label :pre_tax_total 
     = f.text_field :pre_tax_total, maxlength: 50 
    .form-group 
     = f.label :post_tax_total 
     = f.text_field :post_tax_total, maxlength: 50 
    .actions = f.submit 'Save' 
    .clear  

Wenn die App versucht, die customer_info Form zu machen, bekomme ich folgende Fehlermeldung:

undefined method `model_name' for NilClass:Class 

Wenn es die erste Zeile in der Form hits:

= form_for customer_info do |f| 

Jede Idee, wie dies zu tun?

+0

scheint wie 'customer_info' nil – usmanali

+0

ist Ja, es gleich Null ist. Sie erhalten eine Null, wenn Sie den Controller eine neue Aktion aufrufen. Meine Frage hier ist, wie ich eine Teilansicht für eine andere Controller-Aktion aus einer Ansicht für einen Controller aufrufen. In diesem Fall bin ich in der Formularansicht des Ticket-Controllers und möchte eine Ansicht für die neue Aktion des CustomerInfo-Controllers rendern. – EastsideDeveloper

Antwort

2

Versuchen Sie, die machen Code von

= render 'tickets/sections/customer_info', locals: { customer_info: CustomerInfo.new, ticket: @ticket } 

zu

= render partial: 'tickets/sections/customer_info', locals: { customer_info: CustomerInfo.new, ticket: @ticket } 

immer partial hinzufügen erinnern zu ändern, wenn locals verwendet wird.

+0

Das habe ich gemacht und jetzt bekomme ich: undefinierte Methode 'customer_info_path 'für # <# : 0x007f1f9cef0ca0> – EastsideDeveloper

+0

ändern Sie den Code in die alte Syntax: {: customer_info => CustomerInfo.new,: ticket => @ticket} Und überprüfen Sie, wo Sie model_name nennend. –

+0

Ich bin mir nicht sicher, was du mit "wo rufst du model_name" meinst. Die von Ihnen vorgeschlagene Syntax führt zu denselben Ergebnissen. – EastsideDeveloper

0

Verwendung so etwas wie dieses

= render 'tickets/sections/customer_info', locals: { ticket: @ticket } 

Und

= form_for CustomerInfo.new do |f| 
    - f.hidden_field :ticket_id, :value => ticket.id 
    .form-horizontal-column.customer-info 
    .form-group 
     = f.label :pre_tax_total 
     = f.text_field :pre_tax_total, maxlength: 50 
    .form-group 
     = f.label :post_tax_total 
     = f.text_field :post_tax_total, maxlength: 50 
    .actions = f.submit 'Save' 
    .clear 
+0

Das ändert nichts. Ich bekomme immer noch die undefinierte Methode 'customer_info_path 'für # <# : 0x007f1f9cef0ca0> Fehler – EastsideDeveloper

+0

Es ist jetzt ein anderer Fehler – Mukesh