2013-03-03 49 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后跟NilClass未定义的方法`MODEL_NAME” :类。

回答

0

你的代码是好的,我的意思是,你在控制器上放置@movie中的新对象,这是完全正确的。

只要确保你在搜索#添加索引对象的新实例,就像这样:

def index 
    @movie = Movie.new 
end 

你所得到的错误,因为当视图形式在这条线评价:

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

@movie是零,所以model_name不是对象nil的方法,你会得到异常。

+0

谢谢。我通常设置我的索引方法@movies = Movie.all。我现在明白了为什么我只需要创建实例,因为这是表单所在的位置。 – emailnitram 2013-03-03 02:28:45