Ruby on rails Rails常用字符串(用于通知和错误消息等)
大约一年前,我决定确保每个包含非唯一文本的flash通知都能从模块中的方法中获取文本。我这样做的最初原因是为了避免反复输入相同的字符串。如果我想改变措辞,我可以在一个地方很容易地做到,而且重复同一件事的可能性就会降低 我的结局是:Ruby on rails Rails常用字符串(用于通知和错误消息等),ruby-on-rails,ruby,Ruby On Rails,Ruby,大约一年前,我决定确保每个包含非唯一文本的flash通知都能从模块中的方法中获取文本。我这样做的最初原因是为了避免反复输入相同的字符串。如果我想改变措辞,我可以在一个地方很容易地做到,而且重复同一件事的可能性就会降低 我的结局是: module Messages def format_error_messages(errors) errors.map {|attribute, message| "Error: #{attribute.to_s.titleize} #{me
module Messages
def format_error_messages(errors)
errors.map {|attribute, message| "Error: #{attribute.to_s.titleize} #{message}.<br />"}
end
def error_message_could_not_find(object_name)
"Error: Unable to find the specified " + object_name + "!"
end
def error_message_could_not_create(object_name)
"Error: Unable to create the " + object_name + "!"
end
def error_message_could_not_save(object_name)
"Error: Unable to save " + object_name + " to database!"
end
def error_message_could_not_update(object_name)
"Error: Unable to update " + object_name + "!"
end
def error_message_could_not_destory(object_name)
"Error: Unable to destroy " + object_name + "!"
end
def notice_message_created(object_name)
object_name.capitalize + " has been created!"
end
def notice_message_updated(object_name)
object_name.capitalize + " has been updated!"
end
def notice_message_destroyed(object_name)
object_name.capitalize + " has been deleted!"
end
end
模块消息
def格式错误消息(错误)
errors.map{|属性,消息|“错误:{attribute.to_.titleize}{message}.
”
结束
def错误消息找不到(对象名称)
错误:找不到指定的“+对象名称+”
结束
def错误消息无法创建(对象名称)
错误:无法创建“+对象名称+”
结束
def错误消息无法保存(对象名称)
错误:无法将“+对象\名称+”保存到数据库中
结束
def错误消息无法更新(对象名称)
错误:无法更新“+对象名称+”
结束
def错误消息无法删除(对象名称)
错误:无法销毁“+对象名称+”
结束
def通知\消息\已创建(对象\名称)
对象_name.capitalize+“已创建!”
结束
def通知消息更新(对象名称)
对象_name.capitalize+“已更新!”
结束
def通知\消息\已销毁(对象\名称)
对象_name.capitalize+“已被删除!”
结束
结束
在我的控制器中,当我设置闪存时,我可以执行以下操作:
flash[:notice]=创建的通知消息(“post”)
这样,所有成功创建的对象都会生成类似的消息
我现在正在重做我的一个项目,并且正在检查所有这些,我有一种烦人的感觉,这不是最好的方法。我的意思是,这是有效的,到目前为止,这对我来说很好,但我从来没有见过其他人这样做,我开始认为这是有原因的。每当我需要一个新字符串时,就必须添加一个新方法,这几乎是愚蠢的。但是,我如何才能在字符串中插入上下文文本(比如我们正在处理的对象类型的名称)
在处理常见的文本字符串时,是否有Rails社区标准?尤其是那些需要在运行时插入额外文本的文件
我一直在阅读Rails的国际化,因为将我的项目本地化为一种以上的语言会很好,而且我喜欢将我所有的文本字符串放在漂亮的YAML文件中,这会一举两得。但我不知道我如何才能做到这一点,并保持我已经拥有和需要的功能(除非我大错特错了,我不需要它,因为有更好的方法)
我对任何关于这个问题的想法、建议或相关阅读都持开放态度。您可以将其作为替代方法。然后你可以用你想要使用的字符串填充你的语言环境文件。您想要给出的任何参数都可以像本教程第4.2节中的示例那样包括在内
I18n.backend.store_translations :en, :thanks => 'Thanks %{name}!'
I18n.translate :thanks, :name => 'Jeremy'
# => 'Thanks Jeremy!'
因此,请执行以下步骤:
config/locales/en.yml
notice\u message\u created(object\u name)
以下内容:t(:created,object\u name.capitalize)
最后,一切都应该像以前一样工作,您已经摆脱了许多简单的方法,并且您可以通过包括区域设置,并将区域设置文件添加到
config/locales
来国际化您的应用程序。我肯定会选择I18N。然而,它需要一些努力,比如找到所有需要翻译的字符串,并且主要是为翻译文件提供一个好的结构
Rails I18N支持,因此如果您需要在字符串中插入数字或名称,这不会是一个问题
还是我误解了你所说的“同类功能”的意思