2

CSS セレクターをより適切にターゲットにするために、body タグにページ固有の ID を指定する必要があります。

この目的のために、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

5 に答える 5

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") %>
于 2012-06-06T15:49:03.937 に答える
4

この余分な空白が返される原因は何ですか?

スペース

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

これを試すことができます:

<%- content_for :page_id do -%>
  <%='some-page-id'%>
<%- end -%>
于 2012-06-06T15:02:06.163 に答える
3

あなたはいつでもそれをワンライナーにすることができます:

<body id="<%= content_for(:page_id).strip %>">
于 2012-06-06T15:05:09.310 に答える
0

@OscarDelBenは正しいです:

これが機能するものです:

<% content_for :page_id do %><%='some-page-id'%><% end %>
于 2012-06-06T15:09:33.940 に答える
0

これは Rails の通常の動作です。content_for 内に "id=" を追加することをお勧めします。

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

<% content_for :page_id do %>
  <%='id="some-page-id"' %>
<% end %>
于 2012-06-06T15:04:22.623 に答える