0

Использование Devise и желание перейти на определенную страницу после регистрации. Вот кикер; пользователь может либо зарегистрироваться в качестве Покупателя, либо Рабочего через радиокнопку. Когда они подписываются как Рабочие, я хочу, чтобы они пошли по определенному пути.Ruby on Rails: перенаправить перенаправление после регистрации для рабочих ролей

Пока что код, который у меня есть сейчас, покупатель и рабочий, будет идти по тому же пути. «Current_user.worker?» код - это то, что я думаю, не работает правильно.

new.html.erb

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> 
    <%= radio_button_tag 'user[role]', 'worker' %> 
    <%= radio_button_tag 'user[role]', 'buyer' %> 
    <%= f.text_field :username %> 
    <%= f.email_field :email %> 
    <%= f.password_field :password %> 
    <%= f.password_field :password_confirmation %> 
    <%= f.submit 'Create Account', :class => 'button' %> 
<% end %> 

application_controller.rb

class ApplicationController < ActionController::Base 


    def after_sign_up_path_for(resource_or_scope) 
    if current_user.worker? 
     account_setup_path 
    else 
    end 
    end 

end 
+0

у вас должен быть метод, названный работником в пользовательской модели, как этот 'def worker ?; role == 'worker' end' – cristian

+0

hey @ Octopus-Paul, Да. У меня есть этот метод в user.rb как def worker? return role == 'worker' end –

+0

Вы проверили работника? метод, чтобы увидеть, что он возвращает желаемый результат? – cristian

ответ

1

Добавьте следующую строку в ваш user.rb .. если у вас есть столбец в вашей таблице пользователей под названием «роль», и это либо «рабочий», либо «покупатель».

def worker? 
    (self.role == "worker") 
end 

def buyer? 
    (self.role == "buyer") 
end 

Тогда это должно работать после регистрации ... положить его в том же контроллере, как ваш код Новенькие (Скорее всего RegistrationController?)

def after_sign_up_path_for(resource_or_scope) 
     account_setup_path if current_user.worker? 
     some_other_path if current_user.buyer? 

     # And if they are not a buyer or worker .. well. Redirect to root. 
     root_path 
    end 

(Также убедитесь, что у вас последняя версия Завещания)

Смежные вопросы