Jus*_*zer 7 ruby validation error-handling ruby-on-rails ruby-on-rails-3
我正在使用simple_form gem.我想自定义用户验证失败时显示的错误消息.我怎么能做到这一点?
Vas*_*ich 16
您可以在模型中声明错误消息的内容:
validates_length_of :name, :minimum => 5, :message => "blah blah blah"
Run Code Online (Sandbox Code Playgroud)您可以设置id或class为您的错误标记:
<%= f.input :name, :error_html => { :id => "name_error"} %>
Run Code Online (Sandbox Code Playgroud)
然后您可以使用CSS进行样式设置.
你可以使用
<%= f.error :name, :id => "name_error" %>
Run Code Online (Sandbox Code Playgroud)
你会得到的
<span class="error" id="name_error">is too short (minimum is 5 characters)</span>
Run Code Online (Sandbox Code Playgroud)我不知道simple_form gem是否有任何不同.
要更改错误消息的内容,可以使用:message模型中的属性.
class User < ActiveRecord::Base
validates :email, {:presence => true, :message => "is not filled up."}
end
Run Code Online (Sandbox Code Playgroud)
现在验证消息将是Email is not filled up.如果你想要的字段名称也将被改变(Email以E-mail address类似的东西),该办法目前正处于去定义它locales.rb像这样的文件
# config/locales/en.yml
en:
activerecord:
attributes:
user:
email: "E-mail address"
Run Code Online (Sandbox Code Playgroud)
有关详情,请参阅链接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
Run Code Online (Sandbox Code Playgroud)
要自定义验证消息样式,我们必须在样式表中编辑样式
#errorExplanation和..fieldWithErrorsscaffold.css
您可以轻松更改翻译文件中的默认错误消息,该消息位于config/locales/simple_form.en.yml.
在特定的初始化程序中,config/initializers/simple_form.rb您可以否决 html 生成方式的默认选项。
希望这可以帮助。
为了完整起见,我想补充一点,formattastic 是一个更容易开始的选择,因为它有一个默认布局。我非常喜欢 simple_form,但它不提供任何开箱即用的格式,但这就是他们的意图。使用 Formtastic 很难(不可能)更改生成的 html,而使用 simple_form 可以完全按照您的喜好塑造生成的 html。如果您有设计器,并且您生成的表单必须生成相同的 html,这尤其有用。因此,如果您刚开始使用,formattastic 会更快地为您提供更好看的结果。另请注意,切换非常容易,因为语法几乎相同。
| 归档时间: |
|
| 查看次数: |
17320 次 |
| 最近记录: |