【问题标题】:Rails content_tag helper for simple things?Rails content_tag 帮助器用于简单的事情?
【发布时间】:2011-05-29 04:55:53
【问题描述】:

在使用 Rails 时,我应该对所有 html 标签使用 content_tag 帮助器吗?

将 content_tag 用于像 Header 标签这样简单的事情是 Rails 方式吗?

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

对比

<h2>Header</h2>

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

【问题讨论】:

    标签: html ruby-on-rails views


    【解决方案1】:

    在不必要的时候使用content_tag 是一种浪费。没有必要使用 ERBisms 来生成静态 HTML,所以不要这样做。如果其他一些代码决定了使用什么标签,那么您将使用content_tag 来构造该标签。

    【讨论】:

      【解决方案2】:

      如果你问 Rails 这样做的方式,那么它会挑衅地使用 'content_tag',但使用 tag_helpers 有其优点和缺点

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

      优势

      1 - 你的代码会更干净。 (少行)

      2 - 你将有更多的控制其他元素。 例如:您可以拥有自己的辅助标签,例如“big_text_box”,它会返回一个比正常情况更多的文本框,并且您可以在所有站点中使用它

      3 - 您将能够在运行时动态添加类、id 等属性

      缺点

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

      2 - 它比纯 html 慢(但这甚至不会引起注意,除非您的应用程序是该死的主要应用程序......)

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

      HTH

      干杯

      同样的

      【讨论】:

      • 感谢 Sameera,感谢您的意见。我当然希望它成为一个主要的应用程序:) 哈哈!我想我会根据标签的类型进行混合。你说的一切都很有道理。
      【解决方案3】:

      一个有用的方法是“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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-16
        • 1970-01-01
        • 1970-01-01
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-29
        相关资源
        最近更新 更多