LoginSignup
1
1

More than 5 years have passed since last update.

Viewにpathのハードコーディングをしたくないのでdirectを使ってみる

Last updated at Posted at 2018-06-07

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)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1