2016-09-22 60 views
0

我在位於app/views/users/(有我有new.html.erb頁面元素巫婆我想隱藏特定頁面,例如; edit.html.erb; show.html.erb而我有我的layouts/application.html.erb DIV它會。顯示的所有網頁上,所以我想隱藏它軌,CURRENT_PAGE(user_path)給了一個錯誤

我想我能做到這一點是這樣的:

<% unless current_page?(new_user_path) || current_page?(user_path) %> 
    <div>Some content</div> 
<% end %> 

但它會給我一個錯誤,很明顯的:對user_show方法,他需要一個用戶的ID,但我們沒有訪問變量@user存在的頁面。你給我一個幫助:

  1. 任何可能性來解決這個錯誤? (並且我不想在每個地方分配@user變量,我不想讓所有頁面的列表允許列出所有內容)

  2. 是否有任何其他方法可以在特定頁面上隱藏元素?

+0

你試過這個嗎?如果是,請提供錯誤詳情? –

+0

'current_page(user_path)'或'current_page?(user_path)'缺少'?' –

+0

@Ravi Mariya只是一個錯字 –

回答

2

不能完全確定你想什麼來實現的,但是這是你如何從用戶防範不存在:

unless current_page?(new_user_path) || @user && current_page?(user_path(@user)) 
+0

你明白了。對不起英文不是我的母語,所以一定是我沒有正確告訴我的問題。感謝您的幫助! –

+0

請注意,這隻適用於演出和新動作,不適用於編輯,因爲你必須明確地包含它'current_page?(edit_user_path(@user))' –

1

我想你可能想要的是:

<% unless current_page?(controller: 'users') %> 
    <div>Some content</div> 
<% end %> 

通過傳遞controller: 'users',您可以捕獲該控制器的所有路線(操作),包括新/編輯/顯示路線。請參閱docs

+0

不錯,我會牢記這一點,並可能使用它。謝謝! –