我正在使用用户注册/登录的设计。但是当用户从公共可访问页面登录时,设计重定向到 root_path。
我试着用这个:
def after_sign_in_path_for(resource)
request.referrer
end
当用户尝试登录时,它会给出错误“未正确重定向”。
谁能告诉我该怎么做?
我正在使用用户注册/登录的设计。但是当用户从公共可访问页面登录时,设计重定向到 root_path。
我试着用这个:
def after_sign_in_path_for(resource)
request.referrer
end
当用户尝试登录时,它会给出错误“未正确重定向”。
谁能告诉我该怎么做?
我相信如果我是对的,您想要做的是在用户登录时覆盖重定向是在内部更改以下方法controllers/devise/sessions_controller.rb
如果您尚未生成设计控制器,则生成设计控制器。完成后,您将希望在您的内部有以下内容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 角色是否是管理员。如果他们然后他们被重定向到仪表板页面。如果不是,那么它们将被重定向到列表页面。
或者,设计助手声明您也可以执行以下操作:
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
希望这可以帮助。
更新
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