Rails路由(root :to => ...)

50

我知道如何将我的 Rails 应用程序的路由根设置为控制器和操作。

但是,如何添加 ID?

/pages/show/1 应该是根目录。

我该如何设置它?

6个回答

80

我曾经遇到过同样的问题,这个解决方法对我有用:

root :to => "pages#show", :id => '1'

这很好,除了当从应用程序的其他地方链接时,root_path()现在会将?id=1添加到URL中... - msanteler
@MatthewD - 你为什么想让根路由指向 id 为一的页面呢? - BenKoshy

32

Rails 4.0开始,您可以像这样声明根路由:

root 'controller#action'

3
你如何将 ":id" 加入路由中? - dlu
2
@dlu 我们可以传递额外的参数。 root 'controller#action', {your_params} - NBSamar

6

我使用Rails 5.1将主页定向到一个特定的博客。在config/routes.rb文件中,我有...

root 'blogs#show', {id: 1}

这将把根路由指向 /blogs/1

我正在构建一个博客网站,并在使用此功能。第一篇博客将会是主页及主要的博客。

谢谢!


4

马修的解决方案可行,但我认为获取对象更易读。例如,假设您想将根路由设置为名称为“landing”的页面的Page#show操作。这样更易读:

root :to => "pages#show", :id => Page.find_by_name("landing").id

从性能角度来看,这个解决方案较差,因为它需要进行额外的数据库查询,但是如果性能不是高优先级,则这个解决方案更易读。


3

尝试:

 match 'pages/show/:id' => 'pages#show', :as => :root

在Rails控制台中,运行rake routes | grep root命令,应该会显示如下内容:
root     /pages/show/:id(.:format)      {:controller=>"pages", :action=>"show"}

希望这能帮到您。

2

使用Rails 5.1版本 将以下内容添加到config/routes.rb文件中

root 'pages#show', {id: 1}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接