1

我正在使用用户注册/登录的设计。但是当用户从公共可访问页面登录时,设计重定向到 root_path。

我试着用这个:

def after_sign_in_path_for(resource)
 request.referrer
end

当用户尝试登录时,它会给出错误“未正确重定向”。

谁能告诉我该怎么做?

4

1 回答 1

1

我相信如果我是对的,您想要做的是在用户登录时覆盖重定向是在内部更改以下方法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

于 2013-05-31T12:05:30.727 回答