1

これは私の最初の Rails プロジェクトです。「サブスクライバー」と「ユーザー」の両方のコントローラーとモジュールを備えた Web アプリがあります。(サブスクライバーはメールのみを提供し、ユーザーはサインインしています)

サインインしているユーザーのみがアクセスできるサブスクライバーコントローラーに「インデックス」メソッドを作成することにより、ユーザーがサブスクライバーのリストにアクセスできるようにしようとしています。

これを使ってやってみます

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

とsigned_in?セッションヘルパーにあります:

module SessionsHelper def sign_in(user) cookies.permanent[:remember_token] = user.remember_token self.current_user = ユーザー終了

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 に答える