会话路由#destroy action

Fel*_*ger 4 rest ruby-on-rails rails-routing ruby-on-rails-5

我正在链接到Sessions控制器的destroy动作,如下所示:

<%= link_to "Sign out", session_path, method: :delete  %>
Run Code Online (Sandbox Code Playgroud)

routes.rb中:

resources :sessions, only: [:new, :create, :destroy]
Run Code Online (Sandbox Code Playgroud)

Rails抱怨上面的链接:

没有路由匹配{:action =>"destroy",:controller =>"sessions"}缺少必需的键:[:id]

当没有对象ID提供链接时,如何链接到destroy操作并在Rails中保留REST /资源方法?

And*_*nic 6

最好将路径控制器的路由视为单一资源

的routes.rb

resource :sessions
Run Code Online (Sandbox Code Playgroud)

Doc:http://guides.rubyonrails.org/routing.html#singular-resources

这将为您提供一条无需ID即可使用的路线

DELETE/sessions sessions#destroy


Raj*_*ngh 5

destroy是成员路由,您需要传入idparams 才能使其工作,但您可以这样做以将其转换为集合路由

resources :sessions, only: [:new, :create] do
  delete :destroy, on: :collection
end
Run Code Online (Sandbox Code Playgroud)

希望有帮助!