【问题标题】:Extra whitespace around content_for valuecontent_for 值周围的额外空格
【发布时间】:2012-06-06 14:57:55
【问题描述】:

我需要给我的正文标签一个特定于页面的 id 以更好地定位 css 选择器。

为此,我在 application.erb 布局中设置了以下内容:

<body id="<%= content_for :page_id %>">

然后我可以在页面视图中执行以下操作:

<% content_for :page_id do %>
  <%='some-page-id'%>
<% end %>

问题是我在返回值周围返回了额外的空格,导致渲染的正文标记如下所示:

<body id="    some-page-id " >

这会阻止 id 工作。我有一个解决方法:

<% body_id = content_for :page_id %>
<body id="<%= body_id.strip %>">

但是有没有办法解决这个问题,以便 content_for 返回它的值而不需要额外的空格?是什么导致这个额外的空白被返回?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 whitespace render content-for


    【解决方案1】:

    不要使用额外的 ERB 分隔符来设置内容

    <% content_for(:page_id) { "thepageid" } %>
    

    你可以更进一步,定义一个辅助方法

    # in app/helpers/application_helper.rb
    def page_id(page_id)
      content_for(:page) { page_id }
    end
    
    # in your template
    <% page_id("thepageid") %>
    

    【讨论】:

      【解决方案2】:

      是什么导致这个额外的空白被返回?

      空间

      <% content_for :page_id do %>
        <%='some-page-id'%>
      <% end %>
      

      你可以试试这个:

      <%- content_for :page_id do -%>
        <%='some-page-id'%>
      <%- end -%>
      

      【讨论】:

      • 天哪,我觉得自己像个傻瓜。我正在寻找 内的空间,显然它是 和 之间的空间。我会从耻辱中删除它,但我认为你应该得到一个绿色的勾号,我应该感到耻辱。
      【解决方案3】:

      你总是可以使它成为一个单行:

      <body id="<%= content_for(:page_id).strip %>">
      

      【讨论】:

        【解决方案4】:

        @OscarDelBen 是正确的:

        这是有效的:

        <% content_for :page_id do %><%='some-page-id'%><% end %>
        

        【讨论】:

          【解决方案5】:

          这是 Rails 的正常行为,我建议你在 content_for 中添加 "id="

          <body "<%= content_for :page_id %>">
          
          <% content_for :page_id do %>
            <%='id="some-page-id"' %>
          <% end %>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-08-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-02-18
            • 2014-08-25
            相关资源
            最近更新 更多