Рендеринг формы из другого контроллера в Ruby on Rails 3 - PullRequest
5 голосов
/ 13 октября 2011

Хорошо, проблема в том, чтобы попытаться отрисовать форму из контроллера, чтобы создать новую запись. Для этого я вызываю форму по умолчанию, которая идет с созданием скаффолда, я пытаюсь сделать так:

<%= render :partial => 'contactos/form'  %> 

И я получаю следующую ошибку

undefined method 'model_name' for NilClass:Class

Есть ли способ просто выполнить рендеринг из самого представления?

Если его нет ..Какие параметры я должен добавить к контроллеру?

Сейчас у меня просто следующий код:

Class DisplayController < ApplicationController
     def index
        @contactos = Contacto.all
     end
end

* Это контроллер представления, а не тот, с функциями создания и редактирования обновленийс моего эшафота

Хорошо, я провел очень большое исследование, но ни один ответ не может решить мою проблему.(Это первый раз, когда я что-то спрашиваю, заранее извиняюсь за любую ошибку, которую я мог сделать)

Ответы [ 3 ]

6 голосов
/ 13 октября 2011

Проблема в том, что переменная, которую вы используете в форме для вашего контакта, не существует.Единственная переменная, которую вы создали в действии index, - это массив всех контактов, но для формы требуется один экземпляр одного контакта.

Поскольку вы создаете новый контакт, вы должны сделать что-то вроде этогов индексе действий:

@contact = Contact.new
2 голосов
/ 13 октября 2011

Обычно это происходит, когда мы используем переменную экземпляра в представлении, но она равна nil.

Например: в новой форме создания пользователя, которую мы используем,

form_for @user do |f|
....
end

и @user isне инициализируется в действии контроллера, откуда мы можем визуализировать форму, это может произойти.

0 голосов
/ 13 октября 2011

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

Также вам не нужно частичное, вы можете просто поставить:

<%= render 'contactos/form'  %> 
...