大家好,这可能很简单,但我无法在任何地方找到答案。 我在我的Rails应用程序上有一个欢迎页面,当您使用设计登录时,我想将用户从该页面直接重定向到帖子页面,这对我正在使用的代码工作正常。唯一的问题是我无法在您登录后再次访问该页面,因为它显然仍然会重定向。有没有人知道登录时是否有重定向的方法但是如果可能的话仍然允许你返回欢迎页面?
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
感谢。
答案 0 :(得分:1)
最简单的方法在devise https://github.com/plataformatec/devise/wiki/How-To%3A-Redirect-to-a-specific-page-on-successful-sign-in-and-sign-out
的文档中有所描述只需定义类似于application_controller.rb
的内容即可class ApplicationController < ActionController::Base
def after_sign_in_path_for(resource)
posts_path
end
end
答案 1 :(得分:0)
设计
before_filter :authenticate_user
检查用户是否已登录,并且应该执行您想要的操作。您需要在PostsController中设置此过滤器。请参阅文档:https://github.com/plataformatec/devise#controller-filters-and-helpers
答案 2 :(得分:0)
将signed_in用户重定向到Posts
页面是完全错误的方法。
Devise有很多关于如何做到这一点的文档 - 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