0

我正在尝试创建一个包含许多电影的导演列表(每部电影属于一个导演):

class Director < ActiveRecord::Base
  attr_accessible :director

  has_many :movies
end

class Movies < ActiveRecord::Base
  attr_accessible :director_id, :title, :rating, :boxoffice

  belongs_to :director
end

我的架构如下所示:

ActiveRecord::Schema.define(:version => 20130312174246) do

  create_table "directors", :force => true do |t|
    t.string   "director"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end

  create_table "movies", :force => true do |t|
    t.integer  "director_id"
    t.string   "title"
    t.string   "rating"
    t.integer  "boxoffice"
    t.datetime "created_at",      :null => false
    t.datetime "updated_at",      :null => false
  end

end

在 director 控制器中显示:

 def show
    @director = Director.find(params[:director_id])
    @movies = @director.movies
    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @director }
    end
  end

我最终想点击一位导演并查看他或她导演的所有电影,以及电影各自的收视率和票房收入。目前我收到此错误:找不到没有 ID 的 Director

Rails 的新手,所以我不确定如何解决这个问题。这是我想做的正确设置吗?如果没有,我应该如何改变它?谢谢!

4

1 回答 1

1

您应该让导演使用params[:id],而不是使用params[:director_id] 试试这个:

@director = Director.find(params[:id])

要查看导演制作的所有电影,请执行嵌套路由:

resources :directors do
  resources :movies
end

要使所有操作在 中起作用,MovieController您必须遵循嵌套路由语法。在这里找到它:http: //guides.rubyonrails.org/routing.html或在网络上找到僵尸 2 教程幻灯片的导轨,在那里也得到了很好的解释。

于 2013-03-12T21:08:04.620 回答