设计omniauth谷歌誓言错误:未定义的方法`stringify_keys'为“/ users / auth / google_oauth2”:字符串

时间:2017-07-31 20:04:05

标签: ruby-on-rails ruby devise omniauth omniauth-google-oauth2

在使用omniauth-google-oauth2 gem的设计时,在使用Google登录的部分内容中会生成一个链接。默认代码不呈现链接。

这是自动生成的片段(我添加了一些基于引导程序的样式)

<%- if devise_mapping.omniauthable? %>
  <%- resource_class.omniauth_providers.each do |provider| %>
    <%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider), class: "btn btn-block btn-social btn-google" do %>
        <span class="fa fa-google"></span>
    <%end%>
    <br />
  <% end -%>
<% end -%>

这不起作用,我试了一下,然后想出了

<%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}",  user_google_oauth2_omniauth_authorize_path, class: "btn btn-block btn-social btn-google" do %> 
    <span class="fa fa-google"></span>
<%end%>

但是没有一个选项可以使用

1 个答案:

答案 0 :(得分:0)

排序,问题在于我使用链接的方式,我将其更改为块,因为我想使用社交登录引导按钮

请注意我自己和其他人来这篇文章:

当你将link_to转换为一个块时,你没有给出链接文本参数,该文本必须在块中

这是工作版

<%- if devise_mapping.omniauthable? %>
  <%- resource_class.omniauth_providers.each do |provider| %>
    <%= link_to omniauth_authorize_path(resource_name, provider), class: "btn btn-block btn-social btn-google" do %> 
        <span <span class="fa fa-google"></span> Sign in with <%=OmniAuth::Utils.camelize(provider)%>
    <%end%>
    <br />
  <% end -%>
<% end -%>