2012-06-06 135 views
1

我需要给我的身体标记一个页面特定的id来更好地定位css选择器。content_for value的额外空白

为此我已经建立了我的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多余的空格返回它的价值呢?什么导致这个额外的空白被返回?

回答

4

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

空间

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

你可以试试这个:

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

我的上帝,我觉得自己像个傻瓜。我在<%='some-page-id'%>内寻找空格,显然它是<%content_for:page_id do%>和<% end %>之间的空格。我会从耻辱中删除这个,但我认为你应该得到一个绿色的勾号,我应该受到耻辱。 – Undistraction

0

这是Rails的正常行为,我建议你添加 “ID =” 内部content_for

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

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

你总是可以把它作为一个单行:

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

@OscarDelBen是正确的:

这是什么在起作用:

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

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