将UI文本放在Rails模型文件中是否可以?

时间:2009-09-08 15:14:50

标签: ruby-on-rails model-view-controller

我有一个Rails表单用于编辑特定类的对象。表单上的标签需要根据正在编辑的特定对象而略有不同。

这样做的显而易见的方法是向模型对象添加实例方法,以返回该对象的相应标签。但是,这似乎是将视图实现的一部分放在我的Rails项目的models文件夹中,这似乎不对。

有更好的方法吗?

4 个答案:

答案 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