2012-08-27 64 views
3

我相信這很簡單,所以對於天真的問題表示歉意。ROR if if針對當前網址

我想測試我的當前頁面是否爲'jobs#index'。如果是我有一些額外的CSS和內容,我會包括在頁面中,如果不是,那麼我希望它加載沒有這些額外的內容的網頁。

我相信它應該是沿着這些路線的東西,但我似乎無法做到正確。

<% if path == 'jobs#index' %> 
    <div class="slidingDiv"> 
    Fill this space with really interesting content. 
    </div> 
    <div class="show_hide"> 
    FILTERS 
    </div> 
<% else %> 
<% end %> 

任何建議真的會非常感謝!

+1

嘗試'request.path == jobs_path' – apneadiving

回答

6
<% if params[:action] == "index" && params[:controller] == "jobs" %> 

雖然我會把它放在輔助方法中。

+0

太棒了,這是完美的!謝謝:) –

+1

這種解決方案的工作原理,但不是優雅也不是真正可維護 – apneadiving

+0

你能解釋一下嗎?我會設立一個幫手,並在其中列出我想要顯示代碼的動作和控制器。什麼會是更好的解決方案?乾杯 – cih

2

我會創建一個像下面這樣的幫助方法。您可以通過這種方式傳遞更多路徑。

鑑於

<% if is_path?("/hello/world", root_path) %> 

在助手

def is_path?(*paths) 
    paths.include?(request.path) 
end 

注:儘量使用命名爲傭工路線

作業#指數等於jobs_path

5

在rails中有內置的current_page?方法。

if current_page?(:controller => 'jobs', :action => 'index') 

另外,你可以這樣做:

if controller_name == 'jobs' && action_name == 'index' 

順便說一句,你可以在你的示例代碼以上下降<% else %>