0

我刚刚使用 public/index.html 实现了一个新主页,我读到它覆盖了很多路由。

我最初拥有root to: static_pages#home并且在我static_pages\home.html.erb看来,如果用户已登录,他们会看到已登录的主页和匿名访问者 (public/index.html) 的主页(如果未登录)。

实现 public/index.html 后,我为登录用户创建了一条新路由,并将之前的 root_path 重定向到 home_path

get '/home' => 'static_pages#home', :as => :home

但是,我想http://localhost:3000用作登录和访问者主页的主页。这可能吗?如何让访问者看到当前运行良好但http://localhost:3000/home登录后不必使用的当前 public/index.html?http://localhost:3000登录后我也想要。

谢谢

4

2 回答 2

1

public/index.html在 Rails 之前由网络服务器提供服务,因此您需要另一种解决方案。

相反,您可以public/index.html进入app/views/static_pages/index.html并编辑您的控制器,如下所示:

class StaticPagesController < ApplicationController
  def home 
    if signed_in?
      # current content of #home action
    else
      render :index, :layout => false
    end
  end
end

甚至更干净的方式

class StaticPagesController < ApplicationController
  before_filter :show_index_page, :only => :home

  def home 
    # the same
  end

private
  def show_index_page
    render :index, :layout => false unless signed_in?
  end
end
于 2013-05-04T00:44:37.520 回答
0

您需要的是一个简单的 HomeController,它为相应的用户呈现正确的视图。

您必须有两个匿名用户和登录用户的 erb 视图文件。

于 2013-05-04T04:10:09.610 回答