我有一个列出许多职位的网站,但我也希望每个帐户都能够在一个地方访问其职位。因此,我正在使用这些路线:
map.resources :jobs
map.resource :account, :has_many => :jobs
这让我得到像 localhost/jobs/
和 localhost/account/jobs
这样的 URL。但是,两者似乎都呈现 JobsController::index
。我如何在索引操作中设置条件(如何访问 account/jobs 或只是 jobs 在 URL 中指定?)或更改帐户路由以呈现不同的操作?执行此操作的正确方法是什么?
最佳答案
你可以在创建你的路由时使用一个 block ,然后传递一个:controller
参数,就像这样
map.resource :account do |account|
# If you have a special controller 'AccountJobsController'
account.resources :jobs, :controller => "account_jobs"
end
将您的 Controller 放入一个目录结构中可能会更干净,然后您可以以嵌套的方式引用它们。例如:
map.resource :account do |account|
account.resources :jobs, :controller => "accounts/jobs"
end
如果您使用上面的代码片段,您应该在 app/controllers/accounts/jobs_controller.rb 中创建一个 Controller ,其定义如下:
class Account::JobsController < ApplicationController
##
## etc.
##
end
您始终可以使用 rake routes
来检查生成了哪些路由以及它们将使用哪些 Controller 。
关于ruby-on-rails - Ruby on Rails 条件路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1758164/