我正在尝试创建一个有很多电影的导演列表(每部电影属于一个导演):
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
在导演控制器中显示:
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的新手,所以我不知道如何解决这个问题。这是我想要做的正确设置吗?如果没有,我应该如何改变它?谢谢!
答案 0 :(得分: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教程幻灯片的轨道,它也很好地解释了。