【问题标题】:how to do routing with rails如何使用导轨进行路由
【发布时间】:2016-07-19 15:45:27
【问题描述】:

我正在开发一个 Rails 应用程序,其中我有两个模型 productscategory 和我的类别has_many :products 和我的产品belongs_to a category 所以我希望能够设置我的路线,比如 URL 的位置就像http://example.com/products/categoryname/product-name。我怎样才能做到这一点。在我的路线中,我有

resources :products do
  resources categories
  get ':name', to: 'category#index', as: :category
end

我在这里做错了什么?

【问题讨论】:

  • 我发现通过使用 slugs 更容易实现这里有一篇很好的文章blog.teamtreehouse.com/creating-vanity-urls-in-rails
  • routes.rb 文件中的代码似乎您正在尝试生成一些资源丰富的路由,但您的示例 URL 显示类似 non-resourceful !因此,请使用有效的示例 URL 更新您的问题。

标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-5


【解决方案1】:

您可能想在您的routes.rb 中执行此操作

resources :products
get "/products/:category_name/:product_name/" => "products#index"

【讨论】:

    【解决方案2】:

    这比您想象的要困难,因为 URL 链接不遵循“正常”行为。

    您不需要将您的路线嵌套在 routes.rb 文件中。声明关系就足够了。就这样吧;

    resources :products
    resources :categories
    

    您是否反对使用“category_id”与“category_name”……这会更容易。

    否则,您必须为 url 创建一个“slug”。并告诉 Rails 蛞蝓等。它会变得一团糟。

    【讨论】:

      【解决方案3】:

      对于遇到此类问题的任何人,这是我解决问题的方法。 我使用了友好的 id gem 然后在我的路线上我喜欢它

      resources :products

      get "/products/:id/:id/" => "products#show"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-29
        • 2016-04-29
        • 1970-01-01
        • 2011-12-09
        • 1970-01-01
        相关资源
        最近更新 更多