content_for值周围的额外空格

时间:2012-06-06 14:57:55

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

我需要为我的body标签提供一个特定于页面的ID,以便更好地定位css选择器。

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

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

在页面视图中,我可以这样做:

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

问题是我在返回的值周围返回了额外的空格,导致渲染的body标签看起来像这样:

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

这可以防止id工作。我有一个解决方法,我这样做:

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

但有没有办法解决这个问题,以便content_for在没有额外空格的情况下返回其值?是什么导致返回这个额外的空格?

5 个答案:

答案 0 :(得分:8)

请勿使用额外的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") %>

答案 1 :(得分:4)

  

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

空间

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

你可以试试这个:

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

答案 2 :(得分:3)

你可以随时使用:

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

答案 3 :(得分:0)

这是Rails的正常行为,我建议你在content_for

中添加“id =”
<body "<%= content_for :page_id %>">

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

答案 4 :(得分:0)

@OscarDelBen是正确的:

这是有效的:

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