会话路由#destroy 动作
Routing for sessions#destroy action
我正在 link 执行会话控制器的销毁操作,如下所示:
<%= link_to "Sign out", session_path, method: :delete %>
Routes.rb:
resources :sessions, only: [:new, :create, :destroy]
Rails抱怨上面的link:
No route matches {:action=>"destroy", :controller=>"sessions"} missing required keys: [:id]
当没有为 link 提供的对象 ID 时,我如何 link 执行销毁操作并在 Rails 中保留 REST/resource 方法?
您需要将会话资源传递给该路由,如下所示:
<%= link_to "Sign out", session_path(session), method: :delete %>
Rails 显示和删除操作需要资源。
destroy
是成员路由,需要在params中传入id
才能生效,但是可以这样转换为集合路由
resources :sessions, only: [:new, :create] do
delete :destroy, on: :collection
end
希望对您有所帮助!
默认情况下销毁方法需要 id,它应该与 link 一起传递。
对于前。您正在为登录用户销毁 session,那么您必须传递 logged-in 用户的 id
或 session
,
在这种情况下,您的 link 应该是这样的,
<%= link_to "Sign out", session_path(user.id), method: :delete %>
或者
如果你的目的只是 delete/clear session 那么你需要改变路线。
resources :sessions, only: [:new, :create]
delete '/session', to: 'sessions#destroy'
如果你想要两种类型的 link(我们可能会传递或不传递 ID),那么你应该尝试这条路线。
delete '/session(/:id)', to: 'sessions#destroy'
最好将通往会话控制器的路由视为单一资源
routes.rb
resource :sessions
文档:http://guides.rubyonrails.org/routing.html#singular-resources
这将为您提供无需 ID 即可使用的路线
删除/会话会话#destroy
您需要更改路径,在您的情况下可以是 /users/sign_out
或 sessions/sign_out
而不是 /sessions
使用 DELETE
方法。
看看设计的session destroy动作和路线。
所以,你可以使用像
这样的东西
resource :session do
delete :destroy, path: 'sign_out', as: "destroy"
end
这将创建指向 sessions#destroy
的路径 /session/sign_out
,您可以在视图中将其称为 destroy_session_path
。
我正在 link 执行会话控制器的销毁操作,如下所示:
<%= link_to "Sign out", session_path, method: :delete %>
Routes.rb:
resources :sessions, only: [:new, :create, :destroy]
Rails抱怨上面的link:
No route matches {:action=>"destroy", :controller=>"sessions"} missing required keys: [:id]
当没有为 link 提供的对象 ID 时,我如何 link 执行销毁操作并在 Rails 中保留 REST/resource 方法?
您需要将会话资源传递给该路由,如下所示:
<%= link_to "Sign out", session_path(session), method: :delete %>
Rails 显示和删除操作需要资源。
destroy
是成员路由,需要在params中传入id
才能生效,但是可以这样转换为集合路由
resources :sessions, only: [:new, :create] do
delete :destroy, on: :collection
end
希望对您有所帮助!
默认情况下销毁方法需要 id,它应该与 link 一起传递。
对于前。您正在为登录用户销毁 session,那么您必须传递 logged-in 用户的 id
或 session
,
在这种情况下,您的 link 应该是这样的,
<%= link_to "Sign out", session_path(user.id), method: :delete %>
或者
如果你的目的只是 delete/clear session 那么你需要改变路线。
resources :sessions, only: [:new, :create]
delete '/session', to: 'sessions#destroy'
如果你想要两种类型的 link(我们可能会传递或不传递 ID),那么你应该尝试这条路线。
delete '/session(/:id)', to: 'sessions#destroy'
最好将通往会话控制器的路由视为单一资源
routes.rb
resource :sessions
文档:http://guides.rubyonrails.org/routing.html#singular-resources
这将为您提供无需 ID 即可使用的路线
删除/会话会话#destroy
您需要更改路径,在您的情况下可以是 /users/sign_out
或 sessions/sign_out
而不是 /sessions
使用 DELETE
方法。
看看设计的session destroy动作和路线。
所以,你可以使用像
这样的东西 resource :session do
delete :destroy, path: 'sign_out', as: "destroy"
end
这将创建指向 sessions#destroy
的路径 /session/sign_out
,您可以在视图中将其称为 destroy_session_path
。