以下是我在控制器中的代码
@parent_kids = Student.where("parent_id = ?", found_user.id )
session[:parent_kids] = @parent_kids
在视图中,我尝试使用代码,但没有运气:
<% if(session[:parent_kids]) %>
<% session[:parent_kids].each do |kids| %>
<li >
<a href="/school_users">
<i class="menu-icon glyphicon glyphicon-th-list"></i>
<span class="menu-text"> <%= kids.first_name %></span></a>
</li>
<% end %>
<% end %>
答案 0 :(得分:2)
将对象放入会话通常是一个坏主意,他们可能会匆忙将其混乱。请记住,放入会话的内容处理起来相当昂贵,因此请保持小,精益,并且只针对必要的事情。例如,序列化数字或字符串用户ID很好,但序列化整个用户模型不是。
您可能想要的是直接使用实例变量。迭代@parent_kids
是最好的计划。
通常在调试此类问题时,请添加以下代码:
<% if @parent_kids %>
...
<% else %>
<p>No kids?</p>
<% end %>
如果你得到了#34;没有孩子&#34;消息表示您的实例变量未正确定义。如果你期待它,你可以做一些挖掘找出原因。
请记住,在&#34;未定义&#34;之间存在很大差异。和&#34;定义但是空的&#34;。
更正式的定义如下:
<% if @parent_kids.any? %>
...
<% else %>
<p>No kids!</p>
<% end %>
模型的where
方法将始终返回某些内容,因此,如果您没有获得定义的值,那么因为该代码不是&# 39; t执行。