【发布时间】:2014-06-28 15:09:30
【问题描述】:
我是 Rails 新手,我正在尝试自定义身份验证。
我做了一个自定义的确认邮件视图app/views/devise/mailer/confirmation_instructions.html.erb如下:
<p>Welcome <%= @email %>!</p>
<p>
Thanks for registering. You have registered through <%= @resource.provider %>.
The account data has been created automatically as follows:
</p>
<ul>
<li><strong>User Name:</strong> <%= @resource.name %></li>
<li><strong>Password:</strong> <%= @resource.password %></li>
</ul>
<p>You can confirm your account email through the link below:</p>
<p><%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></p>
@resource.provider 返回一个字符串,例如'facebook'、'twitter'、'github'。
如果我想自定义这些字符串,让我们说打印而不是'Facebook'、'Twitter'、'GitHub'...,我应该怎么做?我的第一个想法是一种方法
def print_cool_provider(provider)
if provider == 'facebook'
return 'Facebook'
else if ...
...
end
end
我考虑了一个有限的可能提供者的简短列表,我可以一一处理。我真正的问题更多是关于 MVC、Rails 和 Devise:
我应该在哪里定义此方法以尊重 MVC 模式,同时能够从 confirmation_instructions.html.erb 模板调用它?
【问题讨论】:
-
如果您只想打印人类可读的(第一个字母大写)字符串,您可以在确认说明中使用它:
<%= @resource.provider.humanize %>您可以在这里查看更多信息:api.rubyonrails.org/classes/String.html#method-i-humanize -
这是我的第一个想法,但我想知道是否有更好的选择更尊重 MVC 模式,以防我以后想扩展它。
标签: ruby-on-rails ruby devise omniauth