A common problem web developers face is the fact sometimes we need to show parts of a view only for logged (or non-logged) users. The most common situation is when you need to have a login button/link in your main page.
If you are using Devise gem for authentication this turns out to be a very simple matter. You just have to use the devise helper user_signed_in?. This helper returns true if there is a logged user and false otherwise. It may be used in your controllers, model or views.
In a view you may have something like
<% if user_signed_in? %>
<%= render 'your_conditional_partial_name' %>
<% end %>
By the way... I know this is a bit off-topic for this post, but since we are talking about views and about embedded Ruby code, let me say a few words about a common confusion.
This week I saw a question at StackOverflow (unfortunately I haven't the link right now) where a guy was presenting a common problem. He wrote in one of his views something like:
<%= @users.each |user| do %>
# Some code to show user's fields
<% end %>
And he was complaining that after the user data his view was showing a Hash with all the values of the records.
The point here is that he used <%= %>, with the =, instead of only <% %> in his block opening. Ruby interpreted this as a request to show the contents of the variable inside the tags. So, I give you a free advise: Don't use the = in conditionals or block opening statements. This is one of those errors easy to do and hard to find.