【问题标题】:How can I take out the first segment of a route in rails 4 scaffold如何在rails 4脚手架中取出路线的第一段
【发布时间】:2014-03-17 00:43:22
【问题描述】:

我正在尝试创建一个名为“Pages”的脚手架。

到目前为止一切都很好,但页面结构现在需要更改当前位置:

http://0.0.0.0:3000/pages/the-page-name

我现在需要做的是改用这个:

http://0.0.0.0:3000/the-page-name

在我的 routes.rb 我有这个:

resources :pages

这显然将模型中的所有路由映射到这个基础,但我想隐藏它。

完全有可能吗?

谢谢,

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 routing url-routing


    【解决方案1】:

    您可以指定path

    resources :pages, path: ''
    

    【讨论】:

    • 啊,是的,我这样做了,但我的主页已经有一条路线,但模板不同,需要保持原样,所以这并不完全有效
    • @Mdunbavan 作为您的主页,您应该拥有root to: 'homepage#action'
    【解决方案2】:

    取自Rails Routing Guide,您可以这样做:

    get '*pages', to: 'pages#show', format: false
    

    我建议您将其设置为您拥有的最后一条路由,因为 Rails 路由器将请求与第一条路由匹配,并且在您的路由文件早期使用通配符最终会破坏您所有其他路由/资源。

    【讨论】:

    • Kenneth Kalmer,这很好用,但是当我尝试访问该页面时,我在页面控制器的显示中收到此错误Couldn't find Page without an ID,因为我正在使用friendly_id gem,所以我有这个@page = Page.friendly.find(params[:id])。应该是:title
    • 页面名称将在pages 参数中(params[:pages])。所以你应该可以去Page.friendly.find(params[:pages]),或者只是将glob重命名为'*page'以获得更容易消化的东西
    • 繁荣,非常感谢肯尼斯,我知道这是一个简单的解决办法
    猜你喜欢
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    相关资源
    最近更新 更多