Re: [問題] Active Scaffold 要如何回報錯誤訊息?
由於我又快睡著了,所以就開始 trace rails...
我真的覺得,rails 好不好用先不說,他本身的程式碼真的是很漂亮,
把 ruby 精神發揮地非常徹底。
※ 引述《shelary (台中喵小咩)》之銘言:
: def validate
: errors.add(:name,'名字裡不能有笨字哦!!' ) if name.index('笨') != nil
: end
: 他秀出來的訊息是英文的...例如:
: 1 error prohibited this record from being saved
: There were problems with the following fields:
: ‧Name 名字裡不能有笨字哦!!
: 請問...英文的部份要怎麼改成中文呢??
之前 thegiive 跟我說,建議 error message 自己做,
不只是中英文的問題,顯示方式他似乎也不太喜歡預設的。
而根據我一路追下去的結果,error_messages_for 上的註解也這樣寫:
(p.s. 根據 bbs 重新排版了)
# NOTE: This is a pre-packaged presentation of the errors with
# embedded strings and a certain HTML structure. If what you need
# is significantly different from the default presentation,
# it makes plenty of sense to access the object.errors instance
# yourself and set it up. View the source of this method to see
# how easy it is.
不過如果只是希望 attribute 能顯示中文,其他地方不需要改的話,
動這邊確實有點大動干戈﹍。
p.s. error_messages_for 我是從這邊追來的:
vendor/plugins/active_scaffold_upload/frontends/default/views/
_form_messages.rhtml (^^^^^^^ 我目前用的版本)
所以再從 error_messages_for 裡開始追查,可以看到:
object.errors.full_messages.....
於是再去尋找 full_messages, 在 ActiveRecord::Errors#full_messages 裡。
可以看到他呼叫:@base.class.human_attribute_name(attr)
也就是說,他其實是呼叫你的 model class 的 human_attribute_name
再去追查他的實做,可以看到:
# Transforms attribute key names into a more humane format, such as
# "First name" instead of "first_name". Example:
# Person.human_attribute_name("first_name") # => "First name"
# Deprecated in favor of just calling "first_name".humanize
def human_attribute_name(attribute_key_name) #:nodoc:
attribute_key_name.humanize
end
所以其實只要改寫這段程式碼就可以了,如:
class User
def self.human_attribute_name attr
case attr
when :name then '名字'
when :ouch then '好痛'
end
end
end
要善加利用 open source 啊 ccc
--
In Lisp, you don't just write your program down toward the language,
you also build the language up toward your program.
《Programming Bottom-Up》- Paul Graham 1993
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.218.90.242
推
08/29 23:17, , 1F
08/29 23:17, 1F
推
08/30 11:37, , 2F
08/30 11:37, 2F
→
08/30 11:38, , 3F
08/30 11:38, 3F
→
08/30 11:39, , 4F
08/30 11:39, 4F
→
09/06 18:11, , 5F
09/06 18:11, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章