<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    子在川上曰

      逝者如斯夫不舍晝夜
    隨筆 - 71, 文章 - 0, 評論 - 915, 引用 - 0
    數據加載中……

    error_messages_for的中文化

    在Rails中error_messages_for為國際化的考慮不是很周全,它顯示的是模型的字段名稱,這對于用戶來說是不友好的。為了解決這個問題,只能改它的源碼了----將如下方法,放入ApplicationHelper
    文/陳剛? www.chengang.com.cn? 轉載請聲明出處

    ? def?error_messages_for(*params)
    ????
    #add?by?glchengang
    ????key_hash?=?{}
    ????
    if?params.first.is_a?(Hash)
    ??????key_hash?
    =??params.first
    ??????params
    .delete_at(0)
    ????end
    ????
    #add?end

    ????options?
    =?params.last.is_a?(Hash)???params.pop.symbolize_keys?:?{}
    ????objects?
    =?params.collect?{|object_name|?instance_variable_get("@#{object_name}")?}.compact
    ????count???
    =?objects.inject(0)?{|sum,?object|?sum?+?object.errors.count?}
    ????
    unless?count.zero?
    ??????html?
    =?{}
    ??????[
    :id,?:class].each?do?|key|
    ????????
    if?options.include?(key)
    ??????????value?
    =?options[key]
    ??????????html[key]?
    =?value?unless?value.blank?
    ????????
    else
    ??????????html[key]?
    =?'errorExplanation'
    ????????end
    ??????end
    ??????
    #?change?by?glchengang
    ??????header_message?=?"有#{count}個錯誤"
    #???????header_message?=?"#{pluralize(count,?'error')}?prohibited?this?#{(options[:object_name]?||?params.first).to_s.gsub('_',?'?')}?from?being?saved"
    ??????
    ??????#add?by?glchengang

    ??????error_messages?=?objects.map?do?|object|
    ????????temp?
    =?[]
    ????????object
    .errors.each?do?|attr,?msg|
    ??????????temp?
    <<?content_tag(:li,?(key_hash[attr]?||?attr)?+?msg)?
    ????????end
    ????????temp
    ??????end
    ??????
    #add?end

    #????????error_messages?=?objects.map?{|object|?object.errors.full_messages.map?{|msg|?content_tag(:li,?msg)?}?}

    ??????content_tag(:div,
    ????????content_tag(options[
    :header_tag]?||?:h2,?header_message)?<<
    #???????????content_tag(:p,?'There?were?problems?with?the?following?fields:')?<<
    ??????????content_tag(:ul,?error_messages),
    ????????html
    ??????)
    ????
    else
    ??????
    ''
    ????end
    ??end


    使用依然兼容老的方式,你也可以傳入一個哈希表,把模型字段顯示成對應的中文,示例如下:
    <%=?
    h?
    =?{'username'=>'用戶名',?'password'=>'密碼'}
    error_messages_for?h
    ,?:user
    %>

    另外,還要在environment.rb的最后插入以下代碼:

    errors?=?ActiveRecord::Errors.default_error_messages
    errors[
    :taken]?=?'已經被使用'
    errors[
    :blank]?=?'不能為空'

    posted on 2007-09-19 17:35 陳剛 閱讀(1822) 評論(0)  編輯  收藏 所屬分類: Rails&Ruby

    主站蜘蛛池模板: 黄色短视频免费看| 黑人大战亚洲人精品一区| 毛片在线全部免费观看| 无码天堂亚洲国产AV| 亚洲视频手机在线| 亚洲第一AAAAA片| 亚洲无码黄色网址| 日产乱码一卡二卡三免费| 亚洲黄色免费电影| 免费视频成人手机在线观看网址| 美女无遮挡免费视频网站| 亚洲AV成人影视在线观看| 亚洲欧洲校园自拍都市| 亚洲国产精品高清久久久| 亚洲区小说区图片区| 免费一看一级毛片| 日本大片在线看黄a∨免费| 蜜桃视频在线观看免费网址入口| 99ee6热久久免费精品6| 美女视频黄a视频全免费网站色窝 美女被cao网站免费看在线看 | 免费在线观看理论片| 精品无码国产污污污免费| 国产福利在线观看免费第一福利| 1区2区3区产品乱码免费| 99视频免费播放| 99re在线这里只有精品免费| 免费人成在线观看网站品爱网| 无码日韩精品一区二区免费暖暖| 3344在线看片免费| 色欲国产麻豆一精品一AV一免费 | 一二三四在线观看免费高清中文在线观看 | 亚洲免费人成在线视频观看| 羞羞视频免费网站在线看| 久久最新免费视频| 最新亚洲成av人免费看| 国产亚洲免费的视频看| 久久99精品免费视频| 88av免费观看| 无码精品A∨在线观看免费| 好先生在线观看免费播放| 成人毛片18女人毛片免费视频未|