我需要为我的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在没有额外空格的情况下返回其值?是什么导致返回这个额外的空格?
答案 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 %>