配置设备以使用提供者图像作为 omniauth 链接

Configure devise to use provider images for omniauth links

我正尝试在 /view/devise/shared/_links.html.erb 中执行类似下面的操作,以便为在 login/register 视图中呈现的每个提供商 link 设置不同的图像。

注:这里我还没有添加link图片

<%- if devise_mapping.omniauthable? %>
  <%- resource_class.omniauth_providers.each do |provider| %>

    <% if provider == Facebook %>
      <%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %><br />
    <% end %>
    <% if provider == Twitter %>
      <%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %><br />
    <% end %>
    <% if provider == Google_Oauth2 %>
      <%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %><br />
    <% end %>

  <% end -%>
<% end -%>

原代码是,

<%- 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) %><br />
  <% end -%>
<% end -%>

但是打开视图时出现错误。

uninitialized constant ActionView::CompiledTemplates::Facebook

我使用的提供商名称似乎不正确(但它们正是从 #{OmniAuth::Utils.camelize(provider)}.

呈现的名称

有什么方法可以让我查到这些需要是什么吗?

或者是否有更好的方法来实现我正在尝试做的事情?

您可以转到各自的宝石 github 页面并找到答案。

它们必须是 google_oauth2facebooktwitter

您可以使用

<% case provider %>
<% when :google_oauth2 %>
  ...
<% when :facebook %>
  ...
<% when :twitter %>
<% end %>

您可以使用 <i> <% if provider == :Facebook %> </i>,而不是 <% if provider == Facebook %>,符号为 ":"