1

嗨,伙计们,这可能很简单,但我在 Google 上的任何地方都找不到答案。我的 Rails 应用程序上有一个欢迎页面,当您使用 devise 登录时,我想将用户从该页面直接重定向到帖子页面,这与我正在使用的代码配合得很好。唯一的问题是登录后我无法再次访问该页面,因为它显然仍在重定向。有谁知道登录时是否有重定向的方法,但如果可能的话,仍然允许您返回欢迎页面?

class WelcomeController < ApplicationController
  def index
    if user_signed_in?
      redirect_to :controller=>'posts', :action=>'index'
    end
  end
end

class PostsController < ApplicationController
  before_filter :authenticate_user!

  # GET /statuses
  # GET /statuses.json
  def index
    @posts = Post.order('id DESC').paginate(:per_page => 5,:page => params[:page])

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @posts }
    end
  end
end

谢谢。

4

3 回答 3

1

设计文档中描述了最简单的方法https://github.com/plataformatec/devise/wiki/How-To%3A-Redirect-to-a-specific-page-on-successful-sign-in-and-sign -出去

只需在 application_controller.rb 中定义类似的东西

class ApplicationController < ActionController::Base
  def after_sign_in_path_for(resource)
    posts_path
  end
end
于 2013-05-16T12:22:41.870 回答
0

设计

before_filter :authenticate_user 

检查用户是否已登录,并且应该执行您想要的操作。您需要在 PostsController 中设置此过滤器。请参阅文档:https ://github.com/plataformatec/devise#controller-filters-and-helpers

于 2013-05-16T12:20:02.537 回答
0

这是将已登录用户重定向到您的完全错误的方法Posts页面是完全错误的方式。

设计有关于如何做到这一点的非常好的文档 - https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in

您应该在您的ApplicationController:

def after_sign_in_path_for(resource)
  stored_location_for(resource) || posts_path
end
于 2013-05-16T12:20:15.100 回答