在Rails 3.0.10中使用will_paginate链接锚标记

时间:2011-12-20 05:18:14

标签: ruby-on-rails will-paginate

我正在创建一个网络论坛。有一个页面上有一个线程列表,每个线程的名称链接到一个页面,其中包含有关该线程的帖子。

在线程页面上,我希望能够链接到线程中的最后一篇文章。每个帖子的顶部都有一个数字,对应于它的创建顺序。这个数字是一个锚。

我的代码完美无缺,线程页面上的“最后发布”链接直接发布到帖子页面上的正确帖子...除非帖子超出帖子的第一页。我无法显示要显示的网址的“?page = x”部分。

我的所有研究似乎都表明this是让will_paginate gem传递page参数的方法。但是,它似乎不适用于我的项目。

这是我在帖子页面上的实际分页代码:

<%= will_paginate @posts, :params => {:anchor => i} %>

其中'i'是表示帖子编号的变量。

我不确定是否有一种新方法可以使用最新版本的will_paginate,或者如果我遗漏了某些内容。

修改

以下是在帖子页面上创建锚点的代码(我确实有一些嵌套路由):

<%= link_to(i, subject_topic_path(@subject, @topic, :anchor => i), {:name => i}) %>

这是线程页面上链接到锚点的代码(它是for语句的一部分):

      <%= link_to "Last Post Created:", subject_topic_path(s.subject, s, :anchor => s.posts.count)%>

2 个答案:

答案 0 :(得分:0)

您也知道,您不需要将?page = x部分显示在第1页。分页广告是否会对待:page =&gt;与nil相同:page =&gt; 1,所以除非你有特别的理由表明:

<%= will_paginate @posts %>

工作得很好。

答案 1 :(得分:0)

我最后通过传递:page参数来解决问题,我将链接到最后一篇文章。所以它是:

      <%= link_to "Last Post Created:", subject_topic_path(s.subject, s, :page => x, :anchor => s.posts.count)%>

现在它始终显示URL中的页面。正如安德鲁指出的那样,第一页上的链接不是必需的,而且有点不受欢迎,但链接有效,所以我会接受它。更大的问题是我需要将ruby代码放在我想出视图中的'x'的位置。呸。

我觉得有更好的方法可以做到这一点......但这将同时发挥作用。