配置设计以使用omniauth链接的提供者映像

时间:2016-05-06 09:07:26

标签: ruby-on-rails devise omniauth

我正尝试在/view/devise/shared/_links.html.erb中执行以下操作,为登录/注册视图中呈现的每个提供者链接设置不同的图像。

注意:此处我还没有添加图片链接。

<%- 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 -%>

但是我在打开视图时遇到错误。

  

未初始化的常量ActionView :: CompiledTemplates :: Facebook

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

有没有办法可以查看这些需要的内容?

或者,如果有更好的方式来实现我正在尝试做的事情?

2 个答案:

答案 0 :(得分:0)

你可以去相应的宝石的github页面找出来。

它们必须是google_oauth2facebooktwitter

您可以使用

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

答案 1 :(得分:0)

您可以使用profunctors代替带有符号<i> <% if provider == :Facebook %> </i>的{​​{1}}