2013-06-18 51 views
0

我想讓下面的代碼更短。我需要這樣做,以便/ users/1/...之後的所有內容都可以,/ users/1也可以。我怎樣才能做到這一點?謝謝!字符串後的所有語法? (Ruby)

<%if request.path == "https://stackoverflow.com/users/#{current_user.id}" or request.path == "https://stackoverflow.com/users/#{current_user.id}/listeners" or request.path == "https://stackoverflow.com/users/#{current_user.id}/listening" or request.path == "https://stackoverflow.com/users/#{current_user.id}/discovered" %> 

我想在CSS它類似於^ =

回答

1

您可以使用starts with?檢查是否匹配字符串的開頭「用戶/ 1」等,也可以使用.include?查找的字符串的任何地方。

# starts with: 
<%if request.path.starts_with?("https://stackoverflow.com/users/#{current_user.id}/") %> 
# include: 
<%if request.path.include?("https://stackoverflow.com/users/#{current_user.id}/") %> 

如果你正在試圖找出如果用戶是在用戶控制器動作,那麼你可以檢查控制器的參數值的方式來代替:如果你想知道,如果用戶觀看

<% if params[:controller] == 'users' %> 

頁面是一樣正在觀看的用戶(例如在看自己的賬戶頁面的用戶),您可以比較當前用戶對@user對象,你的方法實例:

<% if current_user == @user %> 
+0

有一個問題,如果用戶有一個ID 1或1000,這將觸發 – APJ

+0

@APJ你想說它應該只觸發user_ids 1或1000. –

+0

@APJ如果你包括一個尾隨/編輯了答案來演示。 – Matt

2

如何一回合參數比較?這一切都可能users資源中發生的,所以網址的這部分將被存儲在params[:id]我們可以與當前用戶ID做比較吧:

<% if params[:id].to_i == current_user.id %> 

或者,因爲你可能在這個控制器設置@user變量:

<% if @user == current_user %> 
+0

熱潮繁榮!謝謝;作品並沒有這樣想 – APJ

相關問題