我在一段時間內沒有使用過Rails,並且我想清除一些內容。無法在Rails控制器中更改變量屬性
因此,@
符號表示,特定的變量將在該控制器視圖內可訪問。正確?
含義,如果我有一個路線
get '/admin/user:id' to: 'admin#user'
這意味着,無論何時,我去的路線,它會去的路線'/admin/user:id'
,然後將所有@variables
在訪問控制器。正確?
現在這是我的一個小問題,通常在JavaScript中是一個簡單的if-statement
。
例如,說我有一個User
模型,我想顯示一個小Friend
的名單與朋友.first_name
,last_name
,favourite_food
。我可以簡單地做
admins_controller
def user
@user = user.find_by(:id => params[:id])
end
然後在我的意見表明,該有類似
<h1><%= @user.name %>'s Friends List</h1>
<table>
<tr><%= @user.user_friends.first.friend.first_name %></tr>
<tr><%= @user.user_friends.first.friend.last_name %></tr>
<tr><%= @user.user_friends.first.friend.favourite_food %></tr>
</table>
我問題是如果他們不」沒有朋友,我想把一切都設置爲「不適用」。這是我在我的控制器中進行的。
def user
@user = user.find_by(:id => params[:id])
if @user.friends.nil?
@user.user_friends.first.friend.name = "N/A"
@user.user_friends.first.friend.name = "N/A"
@user.user_friends.first.friend.name = "N/A"
end
end
我想我可以創建另一個@variable
但是,我假定這將是一個更好的辦法,因爲它不是好製造不必要的寬範圍的變量。
哦,是的,我忘了這一點。是的,我們現在的控制器大約有60行,但是它有很多數學和轉換秒數,日期等等。 – dsomel21
如果你只是爲了顯示目的而轉換,你應該把這個邏輯放到你的視圖中(並且更好的是,視圖助手)。 – Gerry
'user.find(params [:id])'就夠了 – Iceman