如何处理或阻止Ruby on Rails中的"仅允许发布请求"错误?

joh*_*nml 2 rest ruby-on-rails

我有一个[有点]宁静的路线设置:

map.resources :forgotten_passwords,
              :as => 'forgotten-passwords',
              :except => [:destroy, :show, :delete, :index]
Run Code Online (Sandbox Code Playgroud)
   forgotten_passwords 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"}

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

如果访问者通过GET访问/忘记密码,则会显示空白页面.然而,日志显示异常"ActionController :: MethodNotAllowed:仅允许发布请求."

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

我意识到我可以在创建中添加GET路由,然后在控制器中处理错误,但有些东西告诉我有更好的方法.

tad*_*man 5

显式禁用:路由中的索引表示已禁用/ forgotten-passwords GET请求.如果删除它,您应该再次使用有效的索引方法.

在索引方法中,您可以创建一个解释情况的页面.