Rails content_tag helper用于简单的事情?

时间:2011-05-29 04:55:54

标签: html ruby-on-rails views

在使用Rails时,我是否应该对所有html标记使用content_tag帮助程序?

Rails是否可以使用content_tag来处理Header标签等简单的事情?

<%= content_tag :h2, :class => "bla bla" do %>
  Header
<% end %>

VS

<h2>Header</h2>

显然,使用直接html更“简单”和“更短”,但正确的Rails做事方式是什么?

3 个答案:

答案 0 :(得分:10)

当您不需要时使用content_tag是浪费。没有必要使用ERBisms来生成静态HTML,所以不要这样做。如果其他一些代码确定了要使用的标记,那么您可以使用content_tag来构建该标记。

答案 1 :(得分:3)

如果您要求使用rails方式,那么它使用'content_tag',但使用tag_helpers有其自身的优点和缺点

就我个人而言,我可以看到这些东西,(使用rails助手而不是纯HTML)

<强>优点

1 - 您的代码将更清晰。 (少行)

2 - 你将有更多的控制其他元素。     例如:您可以拥有自己的帮助器标签,例如'big_text_box',它将返回比正常情况更多的文本框,您可以在所有网站上使用它

3 - 您将能够在运行时

中动态添加类,id等属性

<强>缺点

1 - 如果你有一个单独的设计师(我的意思是UI工程师),他/她会因你使用的代码而感到困惑。因为它不是纯粹的HTML

2 - 它比纯html慢(但除非你的应用程序是一个该死的主要版本,否则这甚至都不会引人注意......)

所以由你决定使用什么,我个人更喜欢使用rails helper标签,因为它让我更舒服

HTH

欢呼声

sameera

答案 2 :(得分:2)

一个有用的方法是“div_for”,它有点类似于content_tag。如果您发现自己使用以后可以参考的数据标记HTML元素,“div_for”可以让您的生活更轻松。

假设您有一堆人在页面上显示,您需要使用具有唯一ID的div来包装每个人,以便您可以使用JS修改这些元素。您需要手动和直接的HTML:

<% @people.each do |p| %>
  <div id="person_<%= p.id %>"><%= p.name %></div>
<% end %>

如果您使用多个属性(我通常使用自定义ID,类和一些数据属性)来做很多事情,那将会很麻烦。但是使用div_for可以将上面的内容写成:

<% @people.each do |p| %>
  <%= div_for(p) do %><%= @person.name %><% end %>
<% end %>

当事情变得漫长而复杂时,HTML会更容易阅读。我发现在使用javascript时它更清晰。

http://apidock.com/rails/ActionView/Helpers/RecordTagHelper/div_for