Rails kaminari 的分页参数问题

linjunzhugg · August 29, 2014 · Last by linjunzhugg replied at October 11, 2014 · 3294 hits

现在在做一个资讯模块。

URL为:  /articles

资讯有不同的标签,如:iphone, android

URL为:  /articles?tag=iphone

那么此时我用 kaminari 来做分页

<%= paginate @articles %>
```

```
此时的URL会是:  /articles?page=1
```

那么在标签下就做不了分页,如: /articles?tag=iphone&page=1

请问要如何解决这种情况呢?搜索了下好像大家都没这种疑问。

有想过通过 /article_tag  路由来查找标签下的文章,但这样会在 article_tags_controller 中有重复的查询代码。

help





#### 问题解决

## 情况说明
首先要自我反思下,问题描述得不清楚。我的分页是这么写的:

```ruby
 <%= link_to_previous_page @presenter.articles, '上一页',
        class: 'previous-page' %>
```

这种情况是不会自动附带上 URL 上的参数的,并且也不能自定义 view ,因为这货最终生成的就只是一个 <a> 链接

而平常我们使用的分页是这么些的:
```ruby
<%= paginate @users %>
```

这种情况呢,就会自动附带上 URL 上的参数,并且能够自定义 view。

(这就是为什么 Rei 在回答我的时候说他会自动附带上参数的原因,原谅我没有把问题表述清楚 :cry:  ( 丫根本就是表述错误啊!  (╯‵□′)╯︵┻━┻ ))

## 解决方法

在链接中加入 params 参数
```ruby
 <%= link_to_previous_page @presenter.articles, '上一页',
        class: 'previous-page', params: { channel: params[:channel } %>
```

/articles/tag_name?page=2 这样的形式不是很好吗?怎么会有重复代码?

我这默认情况 paignate 就会带上其他参数啊。

#1 楼 @Teddy  这种写法会被 /articles/:id show 路由拦截。我指的重复代码是在 article_tags_controller 中进行查询文章再返回。(最好还是在 articles_controller 查询返回) 😄

#2 楼 @Rei 我想要在分页的 url 中带上我的自定义参数,如: /articles?tag=iphone&page=1 😄

#4 楼 @linjunzhugg 先进到 /articles?tag=iphone 页面才会看到分页链接啊,这个分页链接就带上 tag=iphone 了啊。

#5 楼 @Rei 非常感谢,解答我的两个疑问 😄

你可以在右边点 标签,进入标签页,然后点击下一页,就会发现这个分页连接并没带上 tag=iphone 了

#3 楼 @linjunzhugg :id 没有正则限制的吗?

UP !! UP !!!

问题依旧没有解决。。。。

现在的解决方法:就是自己写个 helper 重新解析分页链接了。

但这样的方法感觉有点 dirty

kaminar 难道没有考虑到这种情况吗? 😢

问题已经解决!!

稍后上说明!

You need to Sign in before reply, if you don't have an account, please Sign up first.