在不同的控制器中创建表单

时间:2013-03-03 02:22:15

标签: ruby-on-rails ruby-on-rails-3.2

我有一个电影控制器和一个搜索控制器。在我的搜索控制器中,我能够从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" %>
 

我在搜索#index中得到NoM​​ethodError,后跟NilClass:Class的未定义方法`model_name'。

1 个答案:

答案 0 :(得分:0)

你的代码没问题,我的意思是,你在控制器上放了一个@movie的新对象,这很好。

只需确保在Search#index中添加对象的新实例,如下所示:

def index
  @movie = Movie.new
end

您收到错误是因为在此行评估视图表单时:

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

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