在使用Rails时,我是否应该对所有html标记使用content_tag帮助程序?
Rails是否可以使用content_tag来处理Header标签等简单的事情?
<%= content_tag :h2, :class => "bla bla" do %>
Header
<% end %>
VS
<h2>Header</h2>
显然,使用直接html更“简单”和“更短”,但正确的Rails做事方式是什么?
答案 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