【问题标题】:cant figure out how to setup this routing using shallow nesting无法弄清楚如何使用浅嵌套设置此路由
【发布时间】:2016-04-19 08:28:25
【问题描述】:

我的路线发生了我预期的冲突,但我不知道如何浅层嵌套资源以获得我想要的结果。 (或者至少我认为浅嵌套是需要做的)

这两个网址冲突了

category_item 显示页面

guides/:guide_id/categories/:category_id/:id

与类别编辑、新页面等冲突

/guides/:guide_id/categories/:id/edit

我正在使用友好的 id gem,所以它认为“编辑”是 :id

我想把category_item url结构改成

guides/:guide_id/:category_id/:id 

(减去 category_item 的 /categories)

这意味着向大多数人显示并被搜索机器人拾取的页面具有更短的更漂亮的 url,它可以防止 url 发生冲突。

我只是不能让它发生。

这是路线

resources :guides do
    resources :categories,     only: [:new, :create, :edit, :update] do
       resources :category_items, path: "", shallow: true,  only: [:update, :new, :create, :edit, :show]
       resources :category_item_keys, path: "keys", only: [:update, :new, :create] do
          get :edit, on: :collection #-> url.com/guides/:guide_id/:category_id/keys/edit
       end
    end
end

如果可能,我只希望删除 category_items 的 /categories。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 routes nested-routes


    【解决方案1】:

    你可以像这样为它创建一条单独的路线:

    resources :guides do
      resources :categories,     only: [:new, :create, :edit, :update] do
        resources :category_items, path: "", only: [:update, :new, :create, :edit, :show]
        resources :category_item_keys, path: "keys", only: [:update, :new, :create] 
      end
    end
    get 'guides/:guide_id/:category_id/keys/edit', to: 'controllerName#actionName', as: :your_custom_path_name
    

    【讨论】:

      【解决方案2】:

      有更好的办法:

      resources :guides do
        resources :categories, except: [:delete] do
          resources :items, controller: 'category_items', except: [:delete]
          resources :item_keys, controller: 'category_item_keys', only: [:update, :new, :create] do
            get :edit, to: 'category_item_keys#edit'
          end
        end
      end
      

      【讨论】:

        猜你喜欢
        • 2013-04-03
        • 1970-01-01
        • 2013-04-10
        • 1970-01-01
        • 1970-01-01
        • 2014-12-18
        • 2014-09-27
        • 1970-01-01
        • 2020-06-21
        相关资源
        最近更新 更多