Я хочу, чтобы люди, которые не вошли в систему, чтобы увидеть страницу показа. Прямо сейчас они получают ошибку NoMethodError
за current_user
.correct_user без использования 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
Я использую @correct_user
, потому что я только хочу показать некоторые вещи создателю вызов:
<% 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 %>
Как я могу позволить, не вошли в систему чтобы просмотреть страницу показа, за исключением того, что находится в пределах @correct_user
?
В трассировке, какая линия имеет на появляется 'NoMethodError'? – Trip
Посмотрите на мой ответ, также это похоже на близкий вопрос к этому http://stackoverflow.com/questions/36407790/rails-user-profile-page-only-accessible-to-correct-user/36407884#36407884 – 7urkm3n
Уточненный вопрос @Поездка. Он появляется для '@ correct_user' в представлении, потому что' current_user' is nil –