I want people who are not logged in to be able to see the show page. Right now they get a NoMethodError
error for current_user
.
def show
@correct_user = current_user.challenges.find_by(id: params[:id])
end
sessions_helper
# Returns the current logged-in user (if any).
def current_user
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
elsif (user_id = cookies.signed[:user_id])
user = User.find_by(id: user_id)
if user && user.authenticated?(:remember, cookies[:remember_token])
log_in user
@current_user = user
end
end
end
I use @correct_user
because I only want to show certain things to the creator of the challenge:
<% if @correct_user %>
# show stuff to user who made challenge
<% else %>
# show to everyone else, which would mean logged in users and non logged in users
<% end %>
How can I allow non-logged in users to see the show page, except for what falls within @correct_user
?
if current_user
@correct_user = current_user.challenges.find_by(id: params[:id])
else
@correct_user = nil
end