Хорошо, это будет немного скучно, так что терпите меня.
У меня есть индексная страница альбома, где отображаются все мои альбомы, я могу переупорядочить их в зависимости от созданного времени и лайков. мой код для этого следующий (просто не обращайте внимания на то, что некоторые вещи закомментированы, я еще не выяснил, как делать еженедельные топ-лайки и топ-лайки за все время, но это еще одна проблема для другого поста)
# album.rb
scope :latest, -> { order(created_at: :desc) }
#scope :weekly, -> { order(likes: :desc) }
#scope :alltime, -> { order(likes: :desc) }
def self.sort_by(sort_param)
case sort_param
when 'latest'
latest
#when 'weekly'
#weekly
#when 'alltime'
#alltime
else
latest
end
end
#album controller
def index
@albums = Album.sort_by(params[:order])
end
#album index
<table>
<tbody>
<%= link_to "Latest", albums_path(order: :latest) %><br>
<%= link_to "Weekly Top", albums_path(order: :weekly) %><br>
<%= link_to "All-Time Top", albums_path(order: :alltime) %>
</tbody
</table>
<table>
<tbody>
<% @albums.each do |album| %>
<tr>
<td><%= link_to album.name, album %></td>
<td><%= link_to image_tag(album.cover_image.variant(resize: "200x200")), album %></td>
<td><%#= album.videos #%></td>
</tr>
<% end %>
</tbody>
</table>
хорошо, я помогаю, все работает так, как ожидалось, и меняет порядок моих альбомов на странице указателя альбомов в зависимости от того, какая ссылка выбрана ... теперь на мою актуальную проблему, у меня есть все альбомы привязаны к категории. Когда я go вхожу в свои категории и выбираю одну, я перехожу на страницу показа категории для этой категории и отображаю все альбомы, которые попадают в указанную категорию c, отлично !. Теперь я борюсь с тем, как я могу изменить порядок альбомов на странице показа категорий, как я делал это на странице указателя альбомов выше?
Я пробовал несколько разных комбинаций вещей, но не смог заставить их работать. Вот что у меня есть
#category.rb
scope :latest, -> { order(created_at: :desc) }
#scope :weekly, -> { order(likes: :desc) }
#scope :alltime, -> { order(likes: :desc) }
def self.sort_by(sort_param)
case sort_param
when 'latest'
latest
#when 'weekly'
#weekly
#when 'alltime'
#alltime
else
latest
end
end
#category controller
def show
@categories = Category.sort_by(params[:order])
end
#category show
<table>
<tbody>
<%= link_to "Latest", categories_path(order: :latest) %><br>
<%= link_to "Weekly Top", categories_path(order: :weekly) %><br>
<%= link_to "All-Time Top", categories_path(order: :alltime) %>
</tbody
</table>
<table>
<tbody>
<% @category.albums.map.each do |album| %>
<tr>
<td><%= link_to album.name, album %></td>
<td><%= link_to image_tag(album.cover_image.variant(resize: "200x200")), album %></td>
</tr>
<% end %>
</tbody>
</table>
Так что я уверен, что я ошибаюсь в части контроллера категорий, а также в путях, которые я вызываю на странице шоу.
Также я даже не уверен, должен ли я был ввести код в модель категории или смог бы вызвать код из модели альбома, когда я пытаюсь переупорядочить альбомы на странице показа категории.
Любой совет по этому вопросу будет принята с благодарностью. Заранее спасибо.