论坛首页 编程语言技术论坛

Active Record 错误信息本地化

浏览 14868 次
该帖已经被评为良好帖
作者 正文
   发表时间:2006-10-14  
不是我不调试
这个问题就出在Application.rb的第6行上.这个代码我在Rails英文网上查过,也在Railscn上找到过.但我试过了,放在Application.rb中时如果我们用Messager_for......时都不好用.如果我们用Messager_for显示出错信息,那么下发空表单时就出错.

流程是这样的.
1.把那些代码Copy到Application.rb中,目的覆盖Messager_for方法
2.有验证的表单中一般都会有Messager_for....吧.这时下发这个表单
3.报错了.

我用另一个方法绕过了Messager_for出错,可以显示出来表单验证出错信息.
流程是这样的.
1.把那些代码Copy到Application.rb中,目的覆盖Messager_for方法
2.有验证的表单中一般都会有Messager_for....吧(先把网页这个Messager_for去掉).这时下发这个表单
3.填写表单内容.同时把表单网页中的Messager_for.....再加回来.这样网页中又有Messager_for...了
4.提交表单
5.报错的信息正确的显示出来了.
0 请登录后投票
   发表时间:2006-10-14  
application.rb? helper为什么定义到controller里去?
0 请登录后投票
   发表时间:2006-10-14  
虽然你写了这么多,我还是没到你描述了更多的信息。

1、你的第6行是代码中的哪一行?按你给的代码,应该是error_list = []这一行,如果真是这样,那么我看你的ruby解释器问题大了。。。
2、出错时的异常信息是什么?就是页面最上面那一点,你把它翻译成中文再告诉我没有错(你说的第6行),但不要把更重要的东西给漏掉了。
3、你生成scaffold测试看看,如果还有错,把测试信息最重要的部分发出来。
0 请登录后投票
   发表时间:2007-01-28  
qiezi的这个补丁可不可以把 field 字段也给汉化了,虽然调用@base.class.human_attribute_name(attr)返回的是字段名的友好形式,但终归是英文的。
可不可以做到返回字段的备注信息? 或者可不可以通过扩展 Migration 给英文字段名添加其他备注信息(如对应的汉字名)?Django在设计 model 的时候就是这么做的。
希望 ruby高手们考虑一下如何实现。
0 请登录后投票
   发表时间:2007-01-28  
在http://www.iteye.com/topic/20123?page=3找到了一个human_name_plugin。

require 'active_record/connection_adapters/abstract/schema_definitions'  
  
module Foo  
  module AdjustHumanName  
    module Work  
      def self.append_features(base)  
        super  
        base.extend ClassMethods  
    ActiveRecord::ConnectionAdapters::Column.class_eval do  
      alias_method :orginal_human_name, :human_name  
      def human_name  
        return @human_name_value if @human_name_value  
        return orginal_human_name  
      end  
    end  
      end  
    end  
      
    module ClassMethods  
    def human_name(kw)  
      kw.each_pair do |key,value|  
        col = self.columns_hash[key.to_s]  
        col.instance_variable_set :@human_name_value,value.to_s  
      end  
    end   
    end  
          
  end  
end  
  
ActiveRecord::Base.class_eval do  
  include Foo::AdjustHumanName::Work  
end 
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics