1

我使我的主要頂部導航在一個循環中的Rails 3凸顯軌道3當前頁:通過ID

<ul> 
<% Placement.all.each do |placement| %> 
    <li><%= link_to placement.placementname, placement_path(placement.id)%> </li> 
<%end%> 
</ul> 

我怎樣才能突出顯示當前位置的背景基於URL中的ID?網址如下:
本地主機:3000 /展示位置/ 1
本地主機:3000 /展示位置/ 2
...

一旦用戶點擊了一個第二導航欄會出現在其中一個標籤左邊。這是我如何渲染它:

<% @placement.ads.all.each do |ad| %> 
    <li><%= link_to ad.adname, placement_ad_path(@placement, ad) %> </li> 
<%end%> 

如何突出顯示當前廣告的背景基於url中的id?網址如下:本地主機:3000 /展示位置/ 1 /廣告/ 1
本地主機:3000 /展示位置/ 2 /廣告/ 3
...

回答

1
<ul> 
<% Placement.all.each do |placement| %> 
    <li class=<%= "highlighted" if placement.id==params[:id].to_i %>> 
     <%= link_to placement.placementname, placement_path(placement.id)%> </li> 
<%end%> 
</ul> 

<% @placement.ads.all.each do |ad| %> 
    <li class=<%= "highlighted" if ad.id==params[:id].to_i %>> 
    <%= link_to ad.adname, placement_ad_path(@placement, ad) %> </li> 
<%end%> 
+0

非常感謝。這工作。什麼是「.to_i」?沒有它,它就無法工作。 – Farhadam

+0

實際上,一旦我在廣告上導航並將網址更改爲'placement/1/ad/5',placement.id取5而不是1,然後我用placement.id替換了您的代碼。== == params [:placement_id]但它只適用於當我在廣告(palcement/1/ads/4)的show.html.erb中,但它不適用於展示位置(展示位置/ 1)的展示視圖,因爲在展示位置展示中它需要看起來爲params [:id]而不是params [:placement_id]。你知道如何解決這個問題嗎? – Farhadam

+0

啊,這樣解決了:<%if params [:controller] ==「placementments」%>

    <%Placement.all.each do | placement | %>
  • ><%= link_to placement.placementname,placement_path(placement.id)%>
  • <%end%>
<%else%>
    <%Placement.all.each do | placement | %> ><%=的link_to placement.placementname,placement_path(placement.id)%><%end%>
<%end%> – Farhadam

0

使用樣式表和類名的選擇性應用。假設你已經設置你的控制器@placement@ad,我會做這樣的事情:

<ul class="placements"> 
<% Placement.all.each do |placement| %> 
    <li class="placement <%= 'selected' if placement == @placement %>"> 
     <%= link_to placement.name, placement %> 
    </li> 
<% end %> 
</ul> 

<ul class="ads"> 
<% @placement.ads.each do |ad| %> 
    <li class="ad <%= 'selected' if ad == @ad %>"> 
     <%= link_to ad.name, [@placement, ad] %> 
    </li> 
<% end %> 

然後你可以把這樣的事情到您的樣式表。 (在這裏我假設SCSS以下。)

.placements { 
    .placement { 
     // Normal styling goes here 

     &.selected { 
      // Extra styles for selected items go here 
     } 
    } 
} 
1

您可以使用params哈希表檢索IDS,比較它們和附加CSS類到LIS:

<ul> 
<% Placement.all.each do |placement| %> 
    <li class="<%= 'highlighted' if placement.id==params[:id] %>"><%= link_to placement.placementname, placement_path(placement.id)%> </li> 
<%end%> 
</ul> 

<% @placement.ads.all.each do |ad| %> 
    <li class="<%= 'highlighted' if ad.id==params[:id] %>"><%= link_to ad.adname, placement_ad_path(@placement, ad) %> </li> 
<%end%> 
在樣式表

然後聲明CSS類:

.highlighted{ background-color: #f00;} /* Whatever color fits your needs */ 
+0

感謝傑夫。我從字面上複製粘貼你的答案,但沒有改變,甚至沒有錯誤!我只是做了一個測試,看看它是否真的下降'高亮'在類中運行此代碼:

    <%Placement.all.each do | placement | %>
  • <%= '突出' 如果placement.id == PARAMS [:ID]%>
  • <%end%>
但結果在瀏覽器是空的,不顯示字母突出顯示。你知道爲什麼嗎?我測試它的網址是localhost:3000/placements/1 – Farhadam