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" %>

我在 Searches#index 中得到一个 NoMethodError,然后是 NilClass:Class 的未定义方法“model_name”。

4

1 回答 1

0

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

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

def index
  @movie = Movie.new
end

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

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

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

于 2013-03-03T02:26:23.400 回答