【发布时间】:2012-06-14 06:53:53
【问题描述】:
我最近发现 Rails 中有一个奇怪的行为与路由和操作有关,具体来说,它在 rails 2.3.5 上。我有一个控制器,我们称之为用户。在路由中,我将用户声明为资源。
map.resources :users
在控制器中,我有标准操作:index, show, edit, update & destroy。此外,我还添加了其他操作来满足某些要求。
def generated_pdf_report
# do something
end
问题是,当我转到页面 /users/generated_pdf_report 时,我在控制台上得到了这个:
Processing UsersController#show (some timestamps) [GET]
Parameters: {"action"=>"show", "id"=>"generated_pdf_report", "controller"=>"users"}
如您所见,服务器将请求路由到方法show,而不是方法generated_pdf_report。 有趣的是,我有其他控制器具有类似的操作并且工作正常。
上述问题的解决方法很简单,确保添加的提要在资源之上:
map.feed 'users/generated_pdf_report', :controller => 'users', :action => 'generated_pdf_report'
map.resources :users
我的问题是:有人知道为什么 Rails 会这样吗?上述解决方案有点草率,您认为针对上述问题的最佳做法是什么。
【问题讨论】:
标签: ruby-on-rails ruby