2011-05-11 41 views
0

我試圖通過檢查控制器來選擇頁面上的選項卡。 即,顯示Products控制器的任何頁面都應該保持選中Product選項卡。 我似乎無法找到正確的方法。 我正在考慮製作一個輔助方法,但將幫手放入我的幫手中似乎有點棘手。這裏是我的我怎樣才能使它發揮作用的猜測:鏈接助手,current_pages和導航

<%= link_to "Products", products_path, current_controller?('products') ? :class => 'selected' %> 

任何人有更好的主意嗎?

回答

1

而問題不會在一個地方,你會有很多標籤,每個標籤將有哪些控制器+動作組合將被激活/選擇的規則。

這是一個常見的問題,有些人也爲此寫了「插件」。

我建議你寫助手。製作你自己的迷你DSL。自行決定什麼是容易的,好看:

<%= link_to_tab_for("Products", products_path, :controller => "sss", :action => "", :other_html_options => {}) 

下一步,實現該方法傭工/ application.rb中

def link_to_tab_for(name, path, options) 
    controller = options.delete(:controller) 
    action = options.delete(:controller) 
    klass = [].push(options[:class]).compact 
    if current_controller?(controller) && (action ? current_action?(action) : true) 
    klass.push("selected") 
    end 
    options[:class] = klass.empty ? "" : klass.join(" ") 
    link_to(name, path, options) 
end 

有在嘗試上述方法您的喜好甘德課程。

+0

感謝您的幫助,我正在做一些與此非常相似的事情。 JD – fighella 2011-05-11 12:43:02