Railsでレストランガイドを作っております。多言語化しているのですが、新たにソーシャルを使ったログイン機能を搭載しようと思い、
deviseとomniauthを組み込もうと考えております。ちなみに多言語化にはi18nで言語ごとに分岐する仕組みをすでに組み込んでいます。
http://localhost:3000/en
http://localhost:3000/ja
とかの配下に
users/auth/facebook
が来るようにルーティングしたいのですが
(つまり/en/users/auth/facebook)
route.rb
の書き方がわかりません。
ruby
1 2scope "(:locale)", locale: /en|ja/ do 3 get '/' => 'frontpage#index' 4 get 'restaurant/' => 'restaurant#index' 5 get 'restaurant/:id' => 'restaurant#show' 6 get 'menu/' => 'menu#index' 7 get 'menu/:id' => 'menu#show' 8 get 'area/' => 'area#index' 9 get 'area/:id' => 'area#show' 10 11devise_for :users, :controllers => { 12 :sessions => "users/sessions", 13 :registrations => "users/registrations", 14 :passwords => "users/passwords", 15 :omniauth_callbacks => "users/omniauth_callbacks" 16} 17end
今の設定だと
http://localhost:3000/en
↓
http://localhost:3000/users/sign_up?locale=en
↓
/users/auth/facebook?locale=en
↓
Facebookログイン時にInvalid
となってしまいます。
ちなみにTOPページのapplication.html.erbのフッタ部分はこうなっています。
ruby
1<% if user_signed_in? %> 2 Logged in as <strong><%= current_user.email %></strong>. 3 <%= link_to 'Edit profile', edit_user_registration_path, :class => 'navbar-link' %> | 4 <%= link_to "Logout", destroy_user_session_path, method: :delete, :class => 'navbar-link' %> 5<% else %> 6 <%= link_to "Sign up", new_user_registration_path, :class => 'navbar-link' %> | 7 <%= link_to "Login", new_user_session_path, :class => 'navbar-link' %> 8<% end %> 9
userページのフッター部分はこうなっております。
ruby
1<%= link_to image_tag('facebook.jpeg'), user_omniauth_authorize_path(:facebook) %>
どのように修正すればロケールを反映したルーティングが出来ますでしょうか?どうかよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。