重写devise_helper.rb无法在rails中运行

时间:2016-04-13 11:40:59

标签: ruby-on-rails ruby ruby-on-rails-4 devise

我想自定义设计错误消息。我创建了一个app / helper / devise_helper.rb文件,如下所示:

module DeviseHelper

def devise_error_messages!
return "" if resource.errors.empty?

messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
sentence = I18n.t("errors.messages.not_saved",
                  count: resource.errors.count,
                  resource: resource.class.model_name.human.downcase)

html = <<-HTML
<div class= "alert alert-info alert-dismissable"> 
 <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
  #{messages}
</div>
HTML

html.html_safe
  end
end

我也有app / views / layouts / _flashes.html.erb文件:

<% flash.each do |key, value| %>
   <%= content_tag(:p, value, :class => "flash #{key}") %>
<% end %> 

我在application.html.erb文件中呈现上述文件:

 <%= render "layouts/flashes"  %> 

我仍然在网页的左上角以纯文本形式获取设计错误消息。有什么指针吗?

1 个答案:

答案 0 :(得分:0)

app/views/layouts/_flashes.html.erb中没有style / css类。你在DeviseHelper#devise_error_messages!方法中使用它们,但这两者并不相关。这就是为什么你没有得到它的风格。

_flashes.html.erb部分包裹在某些课程中,你会很高兴:

<% flash.each do |key, value| %>
   <%= content_tag(:p, value, :class => "flash #{key} alert alert-info") %>
<% end %> 

或者

<% flash.each do |key, value| %>
   <%= content_tag(:p, value, :class => "flash alert alert-#{key}") %>
<% end %>