`
ywencn
  • 浏览: 85044 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Rails的validate验证的本地化

阅读更多

rails在model层进行验证,在页面直接调用

 

<%= error_messages_for 'model名' %>

 

可这样页面出来的错误信息全部是英文的,而且rails是直接取数据库的字段名来显示错误信息,这样肯定是不合理的.我们通过自定义一个 error_messages_for 方法作为helper,显示在model验证时自定义的:message

 

module ApplicationHelper
def error_messages_for(object_name, options = {})
options = options.symbolize_keys
object = instance_variable_get("@#{object_name}")
if object
unless object.errors.empty?

error_lis = []
object.errors.each{ |key,msg| error_lis << content_tag("li", msg) }

content_tag("div",
content_tag(
options[:header_tag] || "h2",
" 发生#{object.errors.count}个错误"
) +content_tag("ul", error_lis),"id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation"
)
end
end
end
end

 

以后,我们在model层这样写:

 

validates_presence_of(:name, :message => "请给你的blog取个好名字!")
 当发生name为空时将显示你定义的message,而不是中英文混杂的东东
转载自:http://www.openabc.net/comments/show/9?project_id=97&project_type=ruby
分享到:
评论
1 楼 骑猴上树 2013-10-31  
报错啊

SyntaxError (C:/home/blog/app/helpers/application_helper.rb:11: invalid multibyt
e char (US-ASCII)
C:/home/blog/app/helpers/application_helper.rb:11: invalid multibyte char (US-AS
CII)
C:/home/blog/app/helpers/application_helper.rb:11: syntax error, unexpected $end
, expecting ')'
...tions[:header_tag] || "h2"," 发生#{object.errors.count}个...
...                               ^):
  app/controllers/application_controller.rb:1:in `<top (required)>'
  app/controllers/home_controller.rb:1:in `<top (required)>'


  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.1
3/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescue
s/layout (12.0ms)
--------------------------------------------------------------------------------
module ApplicationHelper
def error_messages_for(object_name, options = {}) 
options = options.symbolize_keys 
object = instance_variable_get("@#{object_name}") 
if object 
unless object.errors.empty? 
error_lis = [] 
object.errors.each{ |key,msg| error_lis << content_tag("li", msg) } 
 
content_tag("div", 
content_tag(options[:header_tag] || "h2"," 发生#{object.errors.count}个错误") +content_tag("ul", error_lis),"id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation") 
end 
end 
end 
end

相关推荐

Global site tag (gtag.js) - Google Analytics