Rails5.1からカスタムURLヘルパーメソッドを作成するdirect
が追加されました。
例えばSNSログインを実装して、ツイッターやGitHubに処理を飛ばすlinkをViewに書く際、
sample.html.haml
%h1 Logins#index
%p Find me in app/views/logins/index.html.haml
= link_to I18n.t("display.users.twitter"), '/auth/twitter' ,class: "btn btn-primary"
%br/
= link_to I18n.t("display.users.github"), '/auth/github' ,class: "btn btn-success"
ここのViewの、/auth/github
が気になる・・・。
でもdevise使ってないからdeviseのメソッドも使えないし、rails routes
してもPrefix出てこないし・・・、みたいな時に使うとちょうど良い機能な感じです。
config/routes.rb
Rails.application.routes.draw do
root to: 'test_view#index'
resource :login
get '/auth/:provider/callback', to: 'sessions#create'
direct(:auth_twitter) { '/auth/twitter' }
direct(:auth_github) { '/auth/github' }
end
上記のコードに書いてあるdirect(:auth_twitter) { '/auth/twitter' }
みたいな記述をすることで
sample.html.haml
%h1 Logins#index
%p Find me in app/views/logins/index.html.haml
= link_to I18n.t("display.users.twitter"), auth_twitter_path, class: "btn btn-primary"
%br/
= link_to I18n.t("display.users.github"), auth_github_path, class: "btn btn-success"
このように、auth_github_path
の形で記述することができます。
(正直微妙な使い方している気もするので、ちゃんとした使い方知っている人いたら教えてくださいm(__)m)