Ruby on Rails: разработка редиректа после регистрации рабочих ролей - PullRequest
0 голосов
/ 21 декабря 2011

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

Пока что у меня есть код, Покупатель и Работник будут идти по одному и тому же пути.'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

1 Ответ

1 голос
/ 21 декабря 2011

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

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

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

...