我有一个 [有点] 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/