【问题标题】:Rails Routing (root :to => ...)Rails 路由 (root :to => ...)
【发布时间】:2011-09-24 18:57:33
【问题描述】:

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

但是如何添加id呢?

/pages/show/1 应该是根。

如何设置?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 routes url-routing


    【解决方案1】:

    遇到了同样的问题,这对我有用:

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

    【讨论】:

    • 这很好,只是 root_path() 现在在从应用程序的其他地方链接时将 ?id=1 添加到 url...
    • @MatthewD - 很好奇你为什么要让根路由指向一个 id ?
    【解决方案2】:

    截至Rails 4.0,您可以像这样声明根路由:

    root 'controller#action'
    

    【讨论】:

    • 但是如何将 :id 合并到路由中?
    • @dlu 我们可以传递额外的参数。 root 'controller#action', {your_params}
    【解决方案3】:

    我正在使用 Rails 5.1 将主页指向特定的博客。在 config/routes.rb 我有 ...

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

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

    我正在我正在构建的博客网站上执行此操作。第一个博客将是主站点博客以及主页。

    干杯

    【讨论】:

      【解决方案4】:

      Matthew 的解决方案有效,但我认为获取对象更具可读性。例如,假设您要根到名称为“landing”的页面的Page#show 操作。这更具可读性:

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

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

      【讨论】:

        【解决方案5】:

        试试:

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

        在 Rails 控制台中。 rake routes | grep root,应该显示如下:

        root     /pages/show/:id(.:format)      {:controller=>"pages", :action=>"show"}
        

        希望对您有所帮助。

        【讨论】:

          【解决方案6】:

          使用 Rails 5.1 将此添加到 config/routes.rb

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

          【讨论】:

            猜你喜欢
            • 2013-12-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多