[英]Trouble referencing logged in user in Rails
我是Ruby on Rails的新手我正在使用Michael Hartl关于RoR的教程,并试图添加Paperclip为用户做个人资料图片。 如果有帮助,我也在用户上使用Friendly_Id。
我的一个观点出现此错误。 我不确定为什么它说我缺少必需的密钥,@signed_in_user是否应该引用当前签名的用户对象?
No route matches {:controller=>"users", :action=>"show"} missing required keys: [:id]
视图中的违规行是
<%= link_to image_tag(@signed_in_user.avatar.url(:thumb), class:"profile_picture"), user_url %>
调用它的控制器是StoriesController #create :(故事与他的教程中的微博基本相同)
class StoriesController < ApplicationController
before_action :signed_in_user, only: [:create, :destroy]
before_action :correct_user, only: [:edit, :update]
def create
if signed_in?
@signed_in_user = self.current_user
@story = current_user.stories.build
end
if @story.save
flash[:success] = "Story Created!"
redirect_to root_url
else
render 'users/show'
end
end
上面使用了方法的SessionsHelper:
module SessionsHelper
def sign_in(user)
remember_token = User.new_remember_token
cookies.permanent[:remember_token] = remember_token
user.update_attribute(:remember_token, User.hash(remember_token))
self.current_user = user
end
def signed_in?
!current_user.nil?
end
def current_user=(user)
@current_user = user
end
def current_user
remember_token = User.hash(cookies[:remember_token])
@current_user ||= User.find_by(remember_token: remember_token)
end
def current_user?(user)
user == current_user
end
def sign_out
current_user.update_attribute(:remember_token, User.hash(User.new_remember_token))
cookies.delete(:remember_token)
self.current_user = nil
end
def signed_in_user
unless signed_in?
store_location
redirect_to signin_url, notice: "Please Sign in."
end
end
end
我认为你混合了两种不同的语义。 要么你用
link_to image_tag(...), @signed_in_user
或者你用
link_to image_tag(...), user_url(@signed_in_user)
(或user_path(用户))
目前您正在使用第二个选项,但没有用户,这就是错误抱怨的内容:“缺少必需的键:[id]”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.