这是我在图书控制器中的索引操作:http://pastebin.com/XdtGRQKV
以下是我刚才提到的行动的观点:http://pastebin.com/nQFy400m
以下是未登录的结果:http://i.imgur.com/rQoiw.jpg
以下是我使用“admin”用户登录时的结果:http://i.imgur.com/E1CUr.jpg
所以问题是,在视图中,在第25行之前,'user'变量似乎是空的(或未加载),在第25行之后,变量'user'具有预期的值。
我已尝试在books控制器的index方法中初始化变量,但得到完全相同的结果。
提前致谢!
由于stackoverflow限制,BTW不得不制作链接文本。答案 0 :(得分:3)
此:
user = User.find_by_id(session[:user_id])
应该在控制器中,而不是在视图中(MVC!),如下所示:
@user = User.find_by_id(session[:user_id])
然后在您看来,当@Voyta回答时,请使用<%= @user.username %>
。 <% %>
内的代码已经过评估,但未呈现,因此如果您想将结果放入html,则需要添加=
。
所有你的if user
和if user.admin == 1
都会这样看起来好多了:
<% if user %>
<td><%= link_to 'Show', book %></td>
<% if user.admin == 1 %>
<td><%= link_to 'Edit', edit_book_path(book) %></td>
<td><%= link_to 'Delete', book, :confirm => 'Are you sure?', :method => :delete %></td>
<% end
end
%>
如果您在单行中使用if
,请执行以下操作:
<%
if user
if user.admin == 1
%>
<%= link_to 'New book', new_book_path %>
<%
end
end
%>
您可以这样写:
<%= link_to 'New book', new_book_path if user && user.admin == 1 %>
答案 1 :(得分:2)
您没有输出user.username
。它应该是<%= user.username %>
,而不是<% user.username %>