不匹配名称时如何设置控制器的路由

问题描述 投票:0回答:2

我想拥有网址/community,所以这就是我所做的。我创建了控制器:CommunitiesController,并将其放在我的路线中:

get 'community' => 'communities#index'

我设置不正确吗?我遇到的问题是我现在想添加kaminari分页运动场,但命名不匹配导致此功能不起作用:

  get 'community' => 'communities#index'
  resources :communities do
    get 'page/:page', action: :index, on: :collection
  end

因为当我想使用/communities/page/1时它希望我使用用户/community/page/1

使用此用例设置控制器和路由的正确方法是什么?

ruby-on-rails ruby ruby-on-rails-4 kaminari
2个回答
0
投票

我愿意

get 'community' => 'communities#index'
get 'community/page/:page' => 'communities#index'

但是您可能需要调整paginate方法并传递显式参数以使其起作用。我不确定是否需要这样做,但是看起来像这样

<%= paginate(@communities, params: { controller: 'communities', action: 'index' } %>

0
投票

声明原始community路由的更“资源丰富”的方式如下:

resources :communities, path: "community", only: "index"

然后您可以按照以下方式添加Kaminari路线:

resources :communities, path: "community", only: "index" do
  get "page/:page", action: :index, on: :collection
end

有关详细说明,请阅读非常有用的Rails Routing from the Outside In指南。

© www.soinside.com 2019 - 2024. All rights reserved.