Это:
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 %>