У меня есть ресурс с именем posts, которого много. Однако каждый пост может иметь несколько тегов. Я хочу, чтобы пользователи могли перейти к предыдущему сообщению и следующему сообщению, ТОЛЬКО от выбранного тега. Я работаю над всеми сообщениями из базы данных в предыдущем, но когда я нажимаю на тег, и он показывает все теги, prev/next не придерживается того, что такое тег.
Если я посещу url в сочетании с кодом, определенным в routes.rb, get 'tags/:tag', to: 'posts#index', as: :tag
, он перечислит все теги в индексе. Я не хочу этого, я хочу, чтобы пользователь мог нажимать предыдущий или следующий и делать это только на сообщениях, связанных с тегом.
Примечание. Я использую драгоценный камень friendly_id
Контроллеры /posts _controller.rb
def index
@posts = Post.all
if params[:tag]
@posts = Post.tagged_with(params[:tag])
else
@posts = Post.all
end
end
модели /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