使用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将更快地为您提供更好看的结果。 另请注意,切换非常容易,因为语法几乎完全相同。
-
您可以在模型中声明错误消息的内容:
validates_length_of :name, :minimum => 5, :message => "blah blah blah"
-
您可以为错误标记设置
id
或class
:<%= f.input :name, :error_html => { :id => "name_error"} %>
然后,您可以使用CSS进行样式设置。
-
你可以使用
<%= 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
。 如果你想要更改字段名称( Email
到E-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
的样式。