【问题标题】:Ruby on Rails: undefined method `current_user?`Ruby on Rails:未定义的方法`current_user?`
【发布时间】:2013-05-11 02:19:23
【问题描述】:

我在试图弄清楚为什么我收到undefined methodcurrent_user 时遇到问题?'`

在我的应用程序控制器中:

class ApplicationController < ActionController::Base
  protect_from_forgery
  include SessionsHelper

  # Force signout to prevent CSRF attacks
  def handle_unverified_request
    sign_out
    super
  end

   private
    def current_user
        @current_user ||= User.find(session[:user_id]) if session[:user_id]
    end
     helper_method :current_user

  def authorize
    redirect_to login_url, alert: "Not Autherized" if current_user.nil?
  end

  def track_activity(trackable, action = params[:action])
    current_user.activities.create! action: action, trackable: trackable
  end
end

在我的会话助手中:

module SessionsHelper
  def sign_in(user)
    cookies.permanent[:remember_token] = user.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
    @current_user ||= User.find_by_remember_token(cookies[:remember_token])
  end

  def sign_out
    self.current_user = nil
    cookies.delete(:remember_token)
  end
end

我仍然是 Rails 的新手,我正在学习一些教程,但我想弄清楚为什么我会为 current_user 获得未定义的方法?

这是我的错误发生的地方-用户查看文件夹:

<% unless current_user?(@user) %>
  <div id="follow_form">
  <% if current_user.following?(@user) %>
    <%= render 'unfollow' %>
  <% else %>
    <%= render 'follow' %>
  <% end %>
  </div>
<% end %>

【问题讨论】:

  • 你从哪里得到未定义的方法错误?
  • @Sunxperous Ohhhh I seee!!
  • 你能看看答案是否解决了你的问题@andrewliu ?

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

您尚未在任何地方定义current_user? 方法,而您正在调用current_user?(@user)

也许,您需要调用signed_in? 而不是current_user?,或者定义current_user?(@user) 的含义

【讨论】:

    【解决方案2】:

    您还没有定义current_user? 方法。 current_usercurrent_user? 之间有区别 current_user? 总是返回布尔响应。

    但您可以尝试使用current_user(@user)?unless current_user(@user).nil?

    【讨论】:

      【解决方案3】:

      试试这个:

        def current_user?(user)
           user == current_user
        end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-21
        • 1970-01-01
        • 2016-12-15
        • 2019-10-31
        • 2018-07-06
        相关资源
        最近更新 更多