我有一个Rails表单用于编辑特定类的对象。表单上的标签需要根据正在编辑的特定对象而略有不同。
这样做的显而易见的方法是向模型对象添加实例方法,以返回该对象的相应标签。但是,这似乎是将视图实现的一部分放在我的Rails项目的models文件夹中,这似乎不对。
有更好的方法吗?
答案 0 :(得分:1)
不确定我是否完全明白,但似乎你可以采用辅助方法。
答案 1 :(得分:1)
我的一般准则是文本在模型中没有问题,除非它包含标记。如果文本包含标记,则它属于帮助程序。
答案 2 :(得分:0)
您将所有标签放在本地化文件中(即使您只有英文),然后从那里查询i18n guide,第5.1节
如果你使用像formtastic这样的表单生成插件,它可以让你在文件上定义标签并形成提示(来自自述文件):
2. Add some cool label-translations/variants (config/locale/en.yml):
en:
formtastic:
labels:
post:
title: "Choose a title..."
body: "Write something..."
hints:
post:
title: "Choose a good title for you post."
body: "Write something inspiring here."
答案 3 :(得分:0)
最好的方法是使用视图助手吗?
e.g:
def modified_label_tag(obj, field); .... code to generate label_tag; end
将表现逻辑排除在模型和业务逻辑之外。
无论你做什么,都不要覆盖label_tag!
即使你有一个子类,这有关系吗?
e.g:
label_class = case obj.class
when SubClassOfModel
'foo'
...
end