我有一个 [有点] Restful 路线设置:

map.resources :forgotten_passwords,
              :as => 'forgotten-passwords',
              :except => [:destroy, :show, :delete, :index]

忘记密码 POST
/forgotten-passwords(.:format)
{:action=>"create", :controller=>"forgotten_passwords"}

new_forgotten_password GET
/forgotten-passwords/new(.:format)
{:action=>"new", :controller=>"forgotten_passwords"}

edit_forgotten_password GET
/forgotten-passwords/:id/edit(.:format)
{:action=>"edit", :controller=>"forgotten_passwords"}

忘记密码 PUT
/forgotten-passwords/:id(.:format)
{:action=>"update", :controller=>"forgotten_passwords"}

如果访问者通过 GET 访问/forgotten-passwords,他们将看到一个空白页面。但是,日志显示异常“ActionController::MethodNotAllowed: Only post requests are allowed”。

在这种情况下,我想重定向到另一个操作/ View 并向访问者显示令人愉快的错误消息。我认为访问者正在单击电子邮件中的链接,该链接会切断 url 的末尾。

我意识到我可以向 create 添加一个 GET 路由,然后在 Controller 中处理错误,但有些东西告诉我有更好的方法。

最佳答案

从路由中显式禁用 :index 意味着/forgotten-passwords GET 请求被禁用。如果您删除它,您应该再次拥有一个有效的索引方法。

在 index 方法中,您可以创建一个页面来说明情况。

关于ruby-on-rails - 如何处理或防止 Ruby on Rails 中的 "Only post requests are allowed"错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1466790/

10-13 07:16