[英]Unable to log out of clearance gem
我最近將我的項目從有些過時的設計轉移到了許可,盡管嘗試注銷時遇到麻煩
我目前收到路線不存在的錯誤
No route matches [GET] "/sign_out"
路線
resources :passwords, controller: "clearance/passwords", only: [:create, :new]
resource :session, controller: "clearance/sessions", only: [:create]
resources :users, controller: "clearance/users", only: [:create] do
resource :password,
controller: "clearance/passwords",
only: [:create, :edit, :update]
end
get "/sign_in" => "clearance/sessions#new", as: "sign_in"
delete "/sign_out" => "clearance/sessions#destroy", as: "sign_out"
get "/sign_up" => "clearance/users#new", as: "sign_up"
constraints Clearance::Constraints::SignedIn.new do
root :to => 'shopping/merchants#index', as: :signed_in_root
end
constraints Clearance::Constraints::SignedOut.new do
root to: 'clearance/sessions#new'
end
視圖
= link_to sign_out_path, method: :delete, class: 'mdl-navigation__link' do
i.material-icons> exit_to_app
= t('.log_out')
此消息通知您有沒有get
路由sign_out
,這是正確的。 您必須delete
。 這意味着,盡管您使用method: :delete
了努力,但鏈接仍在執行get
請求。 您的link_to
某些地方不正確。 在使用link_to的塊形式時,可能與傳遞method
有關。
嘗試:
<%= button_to "Sign Out", sign_out_path, method: :delete %>
如果可行,請嘗試:
<%= link_to "Sign Out", sign_out_path, method: :delete %>
如果這兩種方法都起作用,那么問題的確與您使用link_to
幫助程序的塊形式的方式有關,而與Clearance無關。
我以為我會跟進此事,對那些發現自己仍然在想這到底是什么的人有更多的見解。
正如Derek所建議的那樣,要對此進行排序,您需要使用button_to
而不是link_to
,如下所示:
<%= button_to "Sign Out", sign_out_path, method: :delete %>
為什么我不能只使用link_to
?
因此,以前的SO對此提供了更多的見解。 本質上,您不能使鏈接僅作為GET用作DELETE方法。
如果您查看link_to
在頁面上的HTML中實際呈現的方式(在Ruby發揮作用之后),您將看到以下內容:
<a rel="nofollow" data-method="delete" href="/sign_out">Sign out</a>
顯然, data-method="delete"
仍然不會削減它,並且仍將請求作為GET
運行。
但是我不需要按鈕,我想要鏈接嗎?
最好的選擇是查看元素上的一些CSS,使其恢復為看起來像鏈接的方式,否則,您將需要使用Javascript路線。
非RESTFUL清除中心臟黑客-不建議!
使用link_to
,更改您的routes.rb
,其中許可路線當前顯示為:
delete "/sign_out" => "clearance/sessions#destroy", as: "sign_out"
至:
get "/sign_out" => "clearance/sessions#destroy", as: "sign_out"
它將GET
請求路由到Clerance控制器上的destroy
動作。 我敢說這是不建議的,Derek可以支持為什么不首先支持此功能(Devise gem確實支持此骯臟的hack)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.