ruby on rails -设计:注册页面作为欢迎/登陆页面,然后到用户配置文件



使用设计,我如何使我的注册作为我的登陆/欢迎页面,然后在注册后,他们进入网站的个人资料/登录区域?

我想弄清楚如何使它像Facebook一样,他们是网站的两面;只有在用户注册或登录后,才能看到外部(注册,关于,联系方式等)和内部(个人资料,注销等)。

谢谢。

注:我是Ruby on Rails和创建应用程序的新手,但我确实用Rails 3教程做了身份验证系统,我了解大多数开始使用设计的事情,我只是不知道从哪里开始。

我打算使用两个应用程序布局,一个是在注册之前,也就是layouts/welcome.html。erb与PagesController (about,terms等),另一个用于登录用户,这将是layouts/application.html。erb与ApplicationController(配置文件,新闻,添加等),这是最好的步骤吗?

在routes.rb:

root :to => 'welcome#index'

welcome是控制器,index是动作

在你的应用程序控制器中:

def after_sign_in_path_for(user)
   "/url_you_want_to_redirect_to/"
end

这是我使用Rails 3.1.0和design 1.5.0的新方法:

routes.rb

root :to => "pages#redirect_to_sign_up"
devise_for :users do
  get "welcome" => "devise/registrations#new", :as => :new_user_registration
  get "account_settings" => "devise/registrations#edit"
  get "sign_in" => "devise/sessions#new"
  get "sign_out" => "devise/sessions#destroy"
  get "new_password", :to => "devise/passwords#new"
end
match 'home',      :to => "user_pages#home"
namespace :user do
  root :to => "user_pages#home"
end

application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery
  protected
  def after_sign_in_path_for(resource)
    stored_location_for(:user) || root_path
  end
  private
  def after_sign_out_path_for(resource)
    stored_location_for(:user) || root_path
  end
end

pages_controller.rb

class PagesController < ApplicationController
  def redirect_to_sign_up
    if signed_in?.blank?
      redirect_to new_user_registration_path
    else
      redirect_to home_path
    end
  end
end

user_pages_controller.rb

class UserPagesController < ApplicationController
  before_filter :authenticate_user!
  def home
  end
  def profile
  end
end

我发现最容易root到所需的认证登录页面,只需使用before_filter强制用户首先通过before_filter登录/注册。

在本例中,假设你的"signed In area"是一个名为profile/index的控制器/动作。

在你的路线。

root :to => 'profile#index'

然后在你的profile_controller中设置如下的before_filter。

before_filter :authenticate_user!

这将自动将登录用户(或较早登录并设置记住我cookie的用户)直接推送到个人资料页面。任何未经身份验证的用户将自动登录。你会想要一个链接(或单独的选项卡)在该页面上注册以及

在根页面检查用户是否已登录,并基于此重定向。

redirect_to sign_up_path if current_user.nil?

或者,您可以呈现不同的模板而不是重定向,但我认为url和页面之间的1:1映射更干净。

另一种方法是修改设计。编辑devise_gem_path/lib/设计/failure_app。并替换redirect_url方法中出现的两个

:"new_#{scope}_session_path"

:

:"new_#{scope}_registration_path"
一个破坏性较小的解决方案是使redirect_url的响应更易于配置。

相关内容

  • 没有找到相关文章

最新更新