Ruby on Rails:修复此路线以显示404

时间:2010-07-16 15:36:37

标签: ruby-on-rails ruby

我正在创建一个新的控制器/路由,只允许HTTP GET和HTTP POST。 URL应该是/ foo。我的路线自然如下:

map.connect 'foo',
  :conditions => { :method => :get },
  :controller => "foo",
  :action => "display_something"

map.connect 'foo',
  :conditions => { :method => :post },
  :controller => "foo",
  :action => "register_foo"

我不明白的一部分是,http://example/foo/1会提出“未知行动”。我不希望/ foo / N可以访问。它应该给用户一个404而不是抛出ActionController :: UnknownAction。

仔细观察RouteSet对象,我们有以下内容:

>> rs.recognize_path "/foo/1"
=> {:controller=>"foo", :action=>"1"}

所以它找到了一条路线,这就是我们没有404的原因。

我是否必须在ApplicationController中使用method_missing进行操作,以便在缺少操作方法时抛出404?如果没有动作我只想要404被抛出。在我的应用程序/ foo / N没有意义,我不想混淆用户。

1 个答案:

答案 0 :(得分:2)

查看@ ActionController::Rescue的API文档,似乎ActionController::UnknownAction的救援响应默认为=> :not_found。我相信,在生产模式下,应该呈现404.尝试在生产模式下运行您的应用程序&看看它是如何响应的(或者,您应该只能在日志中看到HTTP返回码。