Rails 3, только частичный рендеринг, если пользователь вошел в систему

В приложении Rails 3.1 у меня есть метод под названием user_logged_in? от Devise, который я хочу использовать для выборочного рендеринга части. Вот код в layout / application.html.erb:

<% if user_logged_in? %>
<%= render :partial => "home/statusbar" %>
<% end %>

Он использует партиал с другого контроллера. Это частичное:

<div id="status_bar">  
  Signed in as <%= link_to current_user.name, edit_user_registration_path %>
</div>

Ошибка возникает в current_user.name (неопределенный метод), потому что current_user равно nil . Я мог бы переместить проверку user_logged_in? внутри партиала, но я думаю, что было бы немного эффективнее, если бы она находилась в представлении.

Не могли бы вы рассказать мне о лучших практиках или о том, как я может преодолеть ошибку неопределенного метода? Нормально ли, что Rails проверяет код шаблона, даже если он находится в блоке if , который дает сбой?

5
задан joseph 21 July 2011 в 23:08
поделиться