【问题标题】:How do I create will_paginate links to other pages?如何创建指向其他页面的 will_paginate 链接?
【发布时间】:2013-09-18 01:39:15
【问题描述】:

我正在尝试为产品进行分页。我有:

   # Routes
    match 'dashboard' => 'dashboard#index'

   # Dashboard Controller
   def index 
    @products = Product.order("id").page(params[:page]).per_page(4)
   end

   # Dashboard Index View
   h1 products
   .products
   = render @products
   = will_paginate(@products)

分页链接显示在仪表板索引视图中。

例子

     <-- previous 1 2 3 next -->

但链接没有附加正确的路径。默认视图是 localhost:3000/dashboard。
分页链接有:

     http://localhost:3000/?page=2

为了测试,如果我只是在 url 栏中输入带有页面参数的正确路径

     http://localhost:3000/dashboard?page=2

它工作正常并分页,显示下一组产品。我的目标是让链接在链接中有dashboard。我猜这将通过视图中“will_paginate”方法中的某些传递选项组合发生。

我希望当用户位于其根页面时发生这种情况:

  http://localhost:3000/dashboard

【问题讨论】:

  • 这个问题在书面上有点难以阅读(阻止你得到好的答案)。请您填写/改写最后三行或四行吗?我有点明白你所说的一半,但不确定你想要什么。是的 ?page=2 作为默认值,但用于何时、何地等。
  • 对不起..刚刚修改,希望更清楚一点。
  • 好多了。我现在也稍微修改了一下。看看你的想法:)
  • 谢谢。是的,总结起来很完美。现在,如果我只能找到解决方案:)

标签: ruby-on-rails routing will-paginate


【解决方案1】:

要覆盖 will_paginate url:

will_paginate(@products, :params => { :controller => "dashboard", :action => "index" })

或者,如果您已为仪表板命名路由:

will_paginate(@products, :params => { :controller => dashboard_path })

will paginate documentation

【讨论】:

    【解决方案2】:

    对于仍有此问题的任何人:

    # View
    # Generating pagination links for collection in another controller/action.
    will_paginate @products, params: { controller: 'dashboard', action: 'index' } 
    

    和:

    # routes.rb
    get 'dashboard', to: 'dashboard#index' # Before root, 2 route to the same action, Rails/will_paginate will use the first matched one in routes.rb.
    root 'dashboard#index'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 2011-07-07
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多