代码之家  ›  专栏  ›  技术社区  ›  grahamparks

在Rails模型文件中放入UI文本可以吗?

  •  1
  • grahamparks  · 技术社区  · 15 年前

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

    这样做的明显方法是向模型对象添加一个实例方法,以返回该对象的适当标签。然而,这似乎将视图实现的一部分放在了我的Rails项目的Models文件夹中,这似乎不正确。

    有更好的方法吗?

    4 回复  |  直到 15 年前
        1
  •  1
  •   Andy Gaskell    15 年前

    我的一般准则是,除非包含标记,否则文本在模型中是可以的。如果文本包含标记,则它属于帮助程序。

        2
  •  1
  •   Ryan Florence    15 年前

    不确定我是否完全理解,但您似乎可以为这个提供一个帮助方法。

        3
  •  0
  •   amitkaz    15 年前

    将所有标签放在本地化文件中(即使只有英文),然后从中进行查询,请参见 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."
    
        4
  •  0
  •   Omar Qureshi    15 年前

    最好的方法不是使用视图帮助器吗?

    例如:

    def modified_label_tag(obj, field); .... code to generate label_tag; end
    

    将表示逻辑置于模型之外,业务逻辑置于视图之外。

    无论您做什么,都不要覆盖label_标签!

    即使你有一个子类,它是否重要?

    例如:

    label_class = case obj.class
    when SubClassOfModel
    'foo'
    ...
    end