Rails初学者,所以请不要咬人。我已经接管了应用程序的维护/开发,但仍在学习绳索
我想生成以下路线:
/ events / 1 / Project / 2 / Pledge
其中1是eventId
,2是Project Id
。
我有一个项目控制器和事件控制器。承诺行动在项目控制器上
编辑:回答@ wacko的评论。
a)忽略我所要求的网址和复数(我意识到原来的问题有点无效......)
一个事件有多个项目,承诺行动将把用户带到一个页面,在那里他们可以输入特定项目的多个承诺。
也许Pledge行动应该在事件控制器上呢?
和' events / 1 / pledge / 2' (其中2是projectId)
答案 0 :(得分:2)
您要查找的内容称为嵌套资源,也就是说两个资源之间存在父子关系。
resource :events do
resource :projects do
get :pledge, :on => :member
end
end
为此,您的模型看起来像这样
class Event < ActiveRecord::Base
has_many :projects
end
和
class Project < ActiveRecord::Base
belongs_to :event
end
答案 1 :(得分:1)
以下内容应该有效
get '/events/:event_id/projects/:id/pledge' => 'projects#pledge'
在您的控制器操作中,您可以将params哈希中的event_id和project_id分别设为params[:event_id]
和params[:id]
答案 2 :(得分:1)
resources :events do
resources :projects do
member do
get :pledge
end
end
end
您可以将get
更改为所需的http
方法。
如果您需要collections
/events/1/projects/pledge
collection do
get :pledge
end
从项目根文件夹运行rake routes
以查看生成的路由列表
答案 3 :(得分:1)
resources :events do
resource :projects do
resources :pledge
end
end
这将使您能够在控制器中设置范围并可以访问所有7个REST动词
答案 4 :(得分:1)
jsut使用这种方式
resources :events do
resource :projects do
get '/pledge'
end
end