2013-03-03 2 views
1

У меня есть контроллер фильмов и контроллер поиска. В моем контроллере поиска у меня есть возможность искать фильм из IMDB. Я пытаюсь создать форму, где я могу нажать Добавить фильм в библиотеку и попытаться сделать новую запись в моей таблице фильмов.Создание формы в другом контроллере

В моих поисках контроллера у меня есть

def new 
     @search = Search.new 
     @movie = Movie.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @search } 
    end 
    end 

На моем взгляде поисков индекса У меня есть

<%= simple_form_for(@movie) do |f| %> 
<%= f.input :title, :as => :hidden, :input_html => { :value => "Skyfall" } %> 
<%= f.input :year, :as => :hidden, :input_html => { :value => "2012" } %> 
<%= f.input :description, :as => :hidden, :input_html => { :value => "James Bond" } %> 
<%= f.association :genres, include_blank: false, :as => :hidden, :input_html => { :value => "some value" } %> 
<%= f.button :submit, class: "btn btn-primary" %> 

Я получаю NoMethodError в поисках # индекса следует неопределенным метод `MODEL_NAME» для NilClass :Класс.

ответ

0

Ваш код в порядке, я имею в виду, вы помещаете новый объект в @movie на контроллере, что совершенно нормально.

Просто убедитесь, что вы добавляете новый экземпляр объекта в Search # индексе, например:

def index 
    @movie = Movie.new 
end 

Вы получаете сообщение об ошибке, потому что, когда форма вида оцениваются по этой линии:

<%= simple_form_for(@movie) do |f| %> 

@movie - это нуль, поэтому model_name не является методом объекта nil, и вы получаете исключение.

+0

Спасибо. Обычно я настраиваю свои методы индекса @movies = Movie.all. Теперь я понимаю, почему мне просто нужно создать экземпляр, так как это форма. – emailnitram

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