validation导轨的自定义消息3

Rails已经引入了新的方法来validation模型中的属性。 当我使用

validates :title, :presence => true 

它工作,但是当我尝试添加自定义消息

 validates :title, :presence => true,:message => "Story title is required" 

产生错误

 Unknown validator: 'message' 

尝试这个

 validates :title, presence: { message: "Story title is required" } 

其实,我是以更好的方式做到这一点的。 如果你想从消息中删除字段标题,你应该在_form.htmk.erb视图中使用它:

正如你可以在这个视图内看到的:

 <ul> <% @article.errors.full_messages.each do |msg| %> <li><%= msg %></li> <% end %> </ul> 

将其replace为:

 <ul> <% @article.errors.each_with_index do |msg, i| %> <li><%= msg[1] %></li> <% end %> </ul> 

具有条件的布尔的自定义消息可能是:

 validates :foo, inclusion: { in: [true, false], message: "cannot be blank" }, if: :bar? 

你可以使用rails 3的HUMANIZED_ATTRIBUTES。 例如,在上面的情况下,它会是这样的:

 HUMANIZED_ATTRIBUTES = { :title => "story" } def self.human_attribute_name(attr, options={}) HUMANIZED_ATTRIBUTES[attr.to_sym] || super end 

它会给你错误信息,用故事取代模型属性标题。