2013-11-24 5 views
0

У меня есть в навигационной ссылке для регистрации/входа. Я использую Devise.Rails + Devise: как сделать экземпляр для входа в систему доступным для всего веб-сайта?

Моя проблема заключается в том, что я не знаю, как настроить экземпляр переменной, который будет доступен для всего приложения (для всех контроллеров и действий).

Для зарегистрируетесь, я следующее:

class ApplicationController < ActionController::Base 
    protect_from_forgery 
    before_filter :load_registration 

    def load_registration 
    @user = User.new 
    end 
end 

Который, кажется, работает. Когда я нажму на ссылку, откроется окно, где будет отображаться форма для регистрации (если пользователь не вошел в систему). Но как сделать то же самое для входа? .

ответ

0

Похоже, что вы ищете current_user, если пользователь вошел в систему Если да, то ваш ApplicationController изменится на:

class ApplicationController < ActionController::Base 
    protect_from_forgery 
    before_filter :load_registration 

    def load_registration 
    @user = current_user || User.new 
    end 
end 

Таким образом, если current_user доступен, @user будет установлен на него , в противном случае новый экземпляр User будет установлен в @user.

Однако это побеждает часть того, что делает разработать для вас, как правило, следует использовать current_user в вашем приложении в качестве помощника для вошедшего в систему.

0

Я не уверен, что вы спрашиваете, но если вы хотите ссылаться на страницу регистрации или входа в Devise, вам не нужен какой-либо экземпляр var. Это зависит от вашего ресурса, но должно быть что-то вроде:

<% unless current_user %> 
    <%= link_to "Login", new_user_session_path %> 
    <%= link_to "Register", new_user_registration_path %> 
<% end %> 

rake routes Выполнить, чтобы узнать о ваших путях DEViSE.

Если вы хотите поместить логин или зарегистрироваться формы только в навигационной панели, вы можете сделать это с

<%= form_for(resource_name, resource, :url => session_path(resource_name)) do |f| %>

или

<%= form_for(resource_name, resource, :url => registration_path(resource_name)) do |f| %>

И включают Придумайте хелперы в вашем приложении помощники:

def resource_name 
    :user 
end 

def resource 
    @resource ||= User.new 
end