【发布时间】:2017-10-13 12:41:40
【问题描述】:
我有一个名为帖子的资源,其中有很多。但是,每个帖子可以有多个标签。我希望用户能够仅从选定的标签转到上一篇文章和下一篇文章。我让它适用于上一个下一个数据库中的所有帖子,但是当我单击一个标签并显示所有标签时,上一个/下一个不符合标签是什么。
如果我访问与 routes.rb 中定义的代码相关联的 url,get 'tags/:tag', to: 'posts#index', as: :tag,它将列出索引中的所有标签。我不希望这样,我希望用户能够单击上一个或下一个,并且只在与标签关联的帖子上这样做。
注意:我使用的是friendly_id gem
controllers/posts_controller.rb
def index
@posts = Post.all
if params[:tag]
@posts = Post.tagged_with(params[:tag])
else
@posts = Post.all
end
end
models/post.rb
# tags
acts_as_taggable # Alias for acts_as_taggable_on :tags
def next
Post.where("id > ?", id).order(id: :asc).limit(1).first
end
def prev
Post.where("id < ?", id).order(id: :desc).limit(1).first
end
show.html.erb
<%= link_to "← Previous Question", @post.prev, :class => 'button previous-question' %>
<%= link_to "Next Question →", @post.next, :class => 'button next-question' %>
routes.rb
# TAGS
get 'tags/:tag', to: 'posts#index', as: :tag
【问题讨论】:
-
but when I click on a tag and it shows all the tags你能再解释一下吗?它将在哪里显示所有标签?您可以为此添加代码吗? -
我已经更新了@NarasimhaReddy 的帖子
-
所以当一个标签被点击并显示它的相关帖子时,你想要那些帖子列表的分页吗?
-
@arjun 每当点击一个标签并显示相关帖子的列表时,我希望用户点击任何一个帖子并向后或向前移动,但仅限于该标签。 (因此上一个和下一个)。我正在努力让用户一次只能看到一个。
标签: ruby-on-rails ruby