3

我注意到在我的 Rails 视图中,一些视图使用(助手?)名为 xxx 而其他地方使用名为 xxx_tag 的视图?

谁能概述两者之间的区别以及我如何知道在特定情况下使用哪个?

4

2 回答 2

2

label(和等价物)可以在表单构建器(调用时产生的对象form_for)上调用,因此可以知道表单关注的模型实例,将通过for属性自动将其链接到适当的输入,并且可以使用 I18n 翻译.

label_tag(和等价物)不绑定到表单,并且用于在更基本的级别生成标签 HTML 标记。它没有那么聪明,你必须给它你想要的所有属性,但有时这就是你所需要的。

于 2013-04-09T15:43:06.560 回答
2

f.label当您在使用创建的表单对象中form_for(...) do |f|并想要引用模型属性时使用。如果您的应用程序是 i18n-ed,Rails 将使用翻译来显示属性名称。

label_tag当您不在表单对象中时使用。(或者您在表单对象中,但想为非模型属性创建一个虚拟标签。)

所有的表单输入都有这两种变体,带和不带_tag后缀,比如selectandselect_tag

于 2013-10-31T11:09:36.200 回答