2012-06-06 175 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") %>