我在rails视图中注意到,有些视图使用(助手?)名为xxx,其他地方使用名为xxx_tag的视图?
任何人都可以概述两者之间的区别以及我如何知道在特定情况下使用哪一个?
答案 0 :(得分:2)
label
(和等价物)可以在表单构建器上调用(调用form_for
时产生的对象),因此可以知道表单所关注的模型实例,会自动链接它通过for
属性输入相应的输入,并可以使用I18n翻译。
label_tag
(和等价物)不与表单绑定,用于在更基本的级别生成标签HTML标记。它不是那么聪明,你必须给它你想要的所有属性,但有时这就是你需要的。
答案 1 :(得分:2)
当您使用f.label
创建的表单对象内部并且想要引用模型属性时,请使用form_for(...) do |f|
。如果你的应用程序是i18n-ed,Rails将使用翻译来显示属性名称。
当您不在表单对象中时使用label_tag
。 (或者您在表单对象中,但想要为非模型属性创建虚拟标签。)
所有表单输入都有这两种变体,有_tag
后缀select
,有select_tag
和{{1}}等等