我正在使用设备进行用户注册/进入。但是,当用户从公共可访问页面登录时,请将重定向设计为root_path。
我试着用这个:
def after_sign_in_path_for(resource)
request.referrer
end
当用户尝试登录时,会显示错误“未正确重定向”。
有人可以告诉你怎么做吗?
答案 0 :(得分:0)
我相信如果我是对的,当用户登录时要覆盖重定向是在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页面。
或者,设计助手说你也可以这样做:
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