Rails:使用嵌套的命名路由

时间:2011-05-22 23:29:09

标签: ruby-on-rails routes nested-routes

routes.rb中:

resources :jobs do
  resources :activitylogs
end

rake routes:

...
                     POST /jobs/:job_id/activitylogs(.:format)          {:controller=>"activitylogs", :action=>"create"}
new_job_activitylog  GET  /jobs/:job_id/activitylogs/new(.:format)      {:controller=>"activitylogs", :action=>"new"}
edit_job_activitylog GET  /jobs/:job_id/activitylogs/:id/edit(.:format) {:controller=>"activitylogs", :action=>"edit"}
...

如何使用路线new_job_activitylog

执行<%= new_job_activitylog %>会给出未定义的异常 - 使用我看到的大多数示例正在使用的link_to也是如此。

2 个答案:

答案 0 :(得分:4)

使用

<%= new_job_activitylog_path %>

<%= new_job_activitylog_url %>

_path会返回相对路径,而_url会返回包含http://domain.com的完整网址(如果您已在配置中设置它)。

答案 1 :(得分:0)

要使用这些路线名称,我只需将_path附加到它们。

所以:new_job_activitylog未定义,但new_job_activitylog_path是视图中的一个方法,它将作业ID作为参数。

<%= link_to 'new', new_job_activitylog_path(:job_id => @job.id) %>

作品!