我在一段时间内没有使用过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