NoMethodError in UsersController#show
undefined method `signed_in?' for #<UsersController:0x5bf3980>
Rails.root: C:/test_app
Application Trace | Framework Trace | Full Trace
app/controllers/users_controller.rb:91:in `signed_in_user'
Request
Parameters:
{"id"=>"1"}
Show session dump
Show env dump
Response
Headers:
None
В Users_ControllerРеферирование контроллер сеанса от контроллера пользователя, чтобы проверить, если пользователь вошел в систему
def signed_in_user
redirect_to signin_path, notice: "Please Sign In." unless signed_in?
end
В SessionsController
def signed_in?
!current_user.nil?
end
module SessionsHelper
def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
self.current_user = user
end
def sign_out
cookies.delete(:remember_token)
self.current_user = nil
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= user_from_remember_token
end
def signed_in?
!current_user.nil?
end
def create
user = User.authenticate(params[:session][:email],
params[:session][:password])
if user.nil?
flash.now[:error] = "Invalid email/password combination."
@title = "Sign In"
render 'new'
else
sign_in user
flash.now[:error] = "Welcome, #{user.name}"
render 'AdCon'
end
end
def destroy
sign_out
redirect_to root_path
end
private
def user_from_remember_token
User.authenticate_with_salt(*remember_token)
end
def remember_token
cookies.signed[:remember_token] || [nil,nil]
end
end
* EDIT : ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ****
Я использую учебник по: http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-users @ Листинг 9.12
Листинг 9.12. Добавление signed_in_user перед фильтром.
приложение/контроллеры/users_controller.rb
class UsersController < ApplicationController
before_filter :signed_in_user, only: [:edit, :update]
.
.
.
private
def signed_in_user
redirect_to signin_path, notice: "Please sign in." unless signed_in?
end
end
Когда я включил помощника в SessionsController я получил сообщение
неопределенный метод `signed_in? для # Извлеченного источника (около линии # 9):
<div>
<% if controller.signed_in? %> <----LINE 9
<%= link_to "Sign Out", signout_path, :method => :delete %>
<% else %>
<%= link_to "Sign IN" , signin_path %>
Я включил Helper так: класса SessionsController < ApplicationController включает SessionsHelper
я не мог получить эту работу, поэтому я скопировал вспомогательные методы в SessionController, и ошибка ушла. И теперь у меня проблема с 9.12, где signed_in? является неизвестным методом. и это имеет смысл, потому что signed_in? находится в SessionController через помощника. может UserController получить доступ к этой функции. Я новичок в рельсах и смущен.
спасибо за обратную связь
EDIT: * ** * ** * ** * ** * ** * **
Адрес ApplicationController
class ApplicationController < ActionController::Base
protect_from_forgery
include ActionView::Helpers::SessionsHelper
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
helper_method :current_user
end
Немного свет на подробностях. Разве нет помощника? Используете ли вы какие-либо рамки? –
'UsersController
MurifoX
Дэйв, я работаю над проверкой подлинности на тестовом сервере. Я добавил помощника. Спасибо за вашу помощь! – stevenaq