Я верю, что если я прав, что вы хотите сделать, это переопределить перенаправление при входе пользователя в систему, чтобы изменить следующий метод внутри controllers/devise/sessions_controller.rb
Если вы не создали генераторные устройства, то вы generate devise controller. Сделав это вы хотите иметь что-то вроде следующего внутри вашей devise/sessions_controller.rb
def create
self.resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
# respond_with resource, :location => after_sign_in_path_for(resource)
if current_user.role? :administrator
redirect_to dashboard_path
else
redirect_to rota_days_path
end
end
В приведенном выше примере, по умолчанию метод sessions_controller - create
использует следующее: # respond_with resource, :location => after_sign_in_path_for(resource)
, который я закомментирована. Добавив оператор if, который проверяет, является ли роль current_users администратором. Если они затем перенаправляются на страницу панели мониторинга. Если нет, то они перенаправляются на страницу rota.
В качестве альтернативы DEViSE хелпер утверждают, что вы могли бы также сделать что-то вроде:
def after_sign_in_path_for(resource)
stored_location_for(resource) ||
if resource.is_a?(User) && resource.can_publish?
publisher_url
else
super
end
end
Надеется, что это помогает.
Update
def create
@hospital_booking = HospitalBooking.new(params[:hospital_booking])
respond_to do |format|
if @hospital_booking.save
format.html { redirect_to :back, notice: 'Photographer Shift was successfully created.' }
format.json { render json: @hospital_booking, status: :created, location: @hospital_booking }
else
format.html { render action: 'new' }
format.json { render json: @hospital_booking.errors, status: :unprocessable_entity }
end
end
end
Что здесь происходит, когда hospital_booking
сохраняется перенаправляет обратно на страницу выдачи вместо перенаправления на другую страницу. Далее читайте здесь: api dock- redirect_to
Что такое publisher_url? если он заменит его «request.referrer», он дает ошибку «Страница не перенаправляется правильно». Как перенаправить пользователя на обратную страницу? – user2206724
@ user2206724 где вы это делаете? Def after_sign_in_path_for (resource) 'это внутри' controllers/devise/session_controller.rb'. Кроме того, 'publisher_url' является всего лишь примером того, что показывает' devise_helper.rb'. – David
Я определяю его контроллер приложения, он работает, если я заменю request.referrer любым другим определенным путем. Но я не хочу определенный путь, я хочу, чтобы он перенаправлялся на предыдущую/предыдущую страницу. – user2206724