У меня есть sessionController, и я пытаюсь добавить метод redirect_back_or в свой session_helper, чтобы разрешить дружественную пересылку.Сеанс Помощник Метод Не определено
Здесь ошибка я получаю:
undefined method `redirect_back_or' for #<SessionsController:0x007f9fa1b51ec0>
Я перезагрузил сервер и не может понять, почему он не находит этот метод в моем помощнике.
Мой Сессии помощник код выглядит следующим образом:
module SessionsHelper
def deny_access
store_location
redirect_to signin_path, :notice => "Please sign in to access this page."
end
def redirect_back_or(default)
redirect_to(session[:return_to] || default)
clear_return_to
end
private
def store_location
session[:return_to] = request.fullpath
end
def clear_return_to
session[:return_to] = nil
end
end
Мой сессий контроллер
class SessionsController < ApplicationController
def create
auth = request.env["omniauth.auth"]
user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || User.create_with_omniauth(auth)
session[:user_id] = user.id
redirect_back_or user
#redirect_to root_url, :notice => "Signed in!"
end
def destroy
session[:user_id] = nil
redirect_to root_url, :notice => "Signed out!"
end
end
Вы создаете или назначаете вспомогательный метод, когда хотите использовать его в файле вида. Это правда, что вы можете поместить этот метод в 'ApplicationController', но если вы это сделали, вам не нужно объявлять его как' helper_method', чтобы получить доступ к нему с контроллера. Вы никогда не должны перенаправляться из файла вида, поэтому нет необходимости объявлять его как вспомогательный метод. – Batkins
Да, вы правы, не следует перенаправлять из представлений. Я отредактирую. Я извлек из вспомогательного модуля и запутался. – clyfe
Это также объясняет, почему использование методов внутри класса «SessionsHelper» не имеет никакого смысла ... Читайте здесь, чтобы узнать больше о том, когда использовать вспомогательные методы: http://paulsturgess.co.uk/articles/49- using-helper-methods-in-ruby-on-rails – Batkins