【问题标题】:Rails - Specify http verb PUT or DELETE from the routeRails - 从路由中指定 http 动词 PUT 或 DELETE
【发布时间】:2011-12-09 08:29:50
【问题描述】:

是否可以从 route.rb 中为特定路径指定 put 或 delete http 动词?

喜欢:

get 'photos/show'

我尝试使用如下匹配来做到这一点:

match 'photos/show' => 'photos#show', :via => :delete

在 rake 路由中看起来是正确的,但它没有执行删除 http 请求。我也试过了:

match 'photos/show' => 'photos#show', :via => :random

在 rake 路线中,它的显示是“随机的”

好像guides中可以指定get或者post,但是不知道能不能指定put或者delete。有可能吗?

【问题讨论】:

  • put 'photos/:id(.:format)', :to => 'photos#update' 有什么问题?
  • 老实说,我没有尝试 PUT 动词,但我在 routes.rb 上没有找到任何东西,所以我认为它可能无法用作 DELETE。

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1


【解决方案1】:
put 'photos/:id(.:format)', :to => 'photos#update'
delete 'photos/:id(.:format)', :to => 'photos#destroy'

resources :photos

然后点击你的应用目录

rake routes

来吧,你甚至都没有尝试!

【讨论】:

  • 好的,那么问题就在设计范围内。我在里面试过了: devise_scope :user do delete "/logout" => "devise/sessions#destroy" end 它没有用。有什么建议吗?谢谢。
  • 那你需要什么?如果您想要自定义设计路线,您可以尝试devise_for :users, :path_names => { :sign_up => "signup", :sign_in => "login", :sign_out => "logout" }
  • 您似乎想要更深入的自定义。您可能想更新您的问题,然后在这里吸引合适的人。
  • 我也试过了。它添加了“/users/logout”等。我希望它没有“users”前缀。我试图问一些不同的问题,因为我问了 => stackoverflow.com/questions/8418514/…,但我没有得到任何答案。
  • 你怎么知道这不起作用? devise_scope :user do delete "logout", :to => "devise/sessions#destroy" end<%= link_to "Sign out", '/logout', :method => :delete %>。为我工作。
【解决方案2】:

没有什么可以阻止您“直接”使用 put/post/delete 来代替 match。

例如,这对我有用:

get 'user/edit' => 'users#edit', :as => :edit_current_user
put 'signup' => 'users#update'

当你想像这样进行路由时,via 选项很有用(虽然不是很常见的情况):

match 'user/show' => 'users#show', :via => [:get, :post]

【讨论】:

    猜你喜欢
    • 2011-01-30
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多