使用simple_form自定义错误消息

我正在使用simple_form gem。 我想自定义用户validation失败时显示的错误消息。 我怎么能做到这一点?

您可以轻松更改转换文件中的默认错误消息,该文件位于config/locales/simple_form.en.yml

在特定的初始化程序中, config/initializers/simple_form.rb可以否决生成html的默认选项。

希望这可以帮助。

为了完整起见,我想补充一点,formtastic是一个更容易的选择,因为它有一个默认的布局。 我非常喜欢simple_form,但它不提供任何开箱即用的格式,但这是他们的意图。 使用Formtastic,很难(不可能)更改生成的html,而使用simple_form可以完全按照自己的喜好塑造生成的html。 如果你有一个设计师,这个特别有用,你生成的表格必须生成相同的html。 因此,如果您开始使用,formtastic将更快地为您提供更好看的结果。 另请注意,切换非常容易,因为语法几乎完全相同。

  1. 您可以在模型中声明错误消息的内容:

     validates_length_of :name, :minimum => 5, :message => "blah blah blah" 
  2. 您可以为错误标记设置idclass

     <%= f.input :name, :error_html => { :id => "name_error"} %> 

    然后,您可以使用CSS进行样式设置。

  3. 你可以使用

     <%= f.error :name, :id => "name_error" %> 

    你会得到的

     is too short (minimum is 5 characters) 

我不知道simple_form gem是否有任何不同。

要更改错误消息的内容,可以在模型中使用:message属性。

 class User < ActiveRecord::Base validates :email, {:presence => true, :message => "is not filled up."} end 

现在validation消息将是Email is not filled up 。 如果你想要更改字段名称( EmailE-mail address东西),现在的方法是在locales.rb文件中定义它,就像这样

 # config/locales/en.yml en: activerecord: attributes: user: email: "E-mail address" 

有关locales详细信息,请参阅链 另一种方法是在模型中定义人性化的属性,如下所示:

 class User < ActiveRecord::Base validates :email, {:presence => true, :message => "is not filled up."} HUMANIZED_ATTRIBUTES = { :email => "E-mail address", ...(other fields and their humanized names) ... } def self.human_attribute_name(attr, options={}) HUMANIZED_ATTRIBUTES[attr.to_sym] || super end end 

要自定义validation消息样式,我们必须在scaffold.css样式表中编辑#errorExplanation.fieldWithErrors的样式。