我希望沒有登錄的人能夠看到演示頁面。現在他們得到current_user
的NoMethodError
錯誤。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
澄清的問題@Trip。它出現在視圖中的'@ correct_user'上,因爲'current_user'是無 –