1

这是我的第一个 Rails 项目。我有一个带有“订阅者”和“用户”控制器和模块的网络应用程序。(订阅者只提供他们的电子邮件,用户已登录)

我试图让用户访问订阅者列表,方法是在订阅者控制器中创建一个“索引”方法,只有登录的用户才能访问。

我正在尝试使用它来做到这一点

class SubscribersController < ApplicationController
before_filter :signed_in_user, only: [:index]
def index
@subscribers = Subscriber.all
end

其中 signed_in_user 定义如下:

class UsersController < ApplicationController
  def signed_in_user
    unless signed_in?
      store_location
      redirect_to signin_url, notice: "Please sign in."
    end
end

和签到?在会话助手中:

模块 SessionsHelper def sign_in(user) cookies.permanent[:remember_token] = user.remember_token self.current_user = user end

def current_user=(user)
  @current_user = user
end

def current_user
  @current_user ||= User.find_by_remember_token(cookies[:remember_token])
end

def signed_in?
  !current_user.nil?
end

但它不起作用,因为我无法从订阅者控制器访问 signed_in_user。这样做的“正确”方法是什么?

谢谢!

4

1 回答 1

2

在您的 UsersController 中包含 SessionsHelper,以便可以访问该功能。

class UsersController < ApplicationController
include SessionsHelper
.......
end

像signed_in这样的函数?在许多控制器中通常需要这些,最好在应用程序控制器本身中包含帮助程序。

于 2013-06-02T14:15:14.400 回答