繁体   English   中英

在Rails中引用登录用户时遇到问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM