2016-06-07 4 views
1

рельсы 3,2 Рубин 2.1.5Rendering частичный вид в результате ошибки

Я пытаюсь иметь единую форму для билета, который включает в себя ряд разделов.

Один из sectios называется customer_info

В приложение/просмотров/билеты/show.html.slim, у меня есть:

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

и в мое приложение/просмотров/билеты/разделы/_customer_info.html.slim, у меня есть:

= 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  

Когда приложение пытается оказать форму customer_info, я получаю следующее сообщение об ошибке:

undefined method `model_name' for NilClass:Class 

Когда он попадает в первую строку в виде:

= form_for customer_info do |f| 

Любая идея, как это сделать?

+0

кажется, 'customer_info' равна нулю – usmanali

+0

Да, это ноль. Вы получаете нуль, когда вызываете новое действие контроллера. Мой вопрос здесь в том, как я называю частичное представление для другого действия контроллера из представления для одного контроллера. В этом случае я являюсь в форме просмотра контроллера билетов, и я хочу отобразить представление для нового действия контроллера CustomerInfo – EastsideDeveloper

ответ

2

Попробуйте изменить код визуализации из

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

в

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

Всегда помните, чтобы добавить partial если locals используется.

+0

Я сделал это, и теперь я получаю: undefined метод 'customer_info_path 'для # <# <Класс : 0x000000088fc3e0>: 0x007f1f9cef0ca0> – EastsideDeveloper

+0

Изменить код старого синтаксиса: {: customer_info => CustomerInfo.new,: билет => @ticket} И проверить, где вы звоните MODEL_NAME. –

+0

Я не уверен, что вы подразумеваете под «где вы вызываете имя модели». Предлагаемый вами синтаксис дает те же результаты – EastsideDeveloper

0

использовать что-то вроде этого

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

И

= 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

Это ничего не меняет. Я по-прежнему получаю неопределенный метод 'customer_info_path 'для # <# <Класс: 0x000000088fc3e0>: 0x007f1f9cef0ca0> ошибка – EastsideDeveloper

+0

Сейчас другая ошибка – Mukesh

Смежные вопросы