На странице просмотра списков я показываю фильмы, которые принадлежат этому списку.У меня есть кнопка, которая при нажатии должна сортировать фильмы в этом списке по названию.Я думаю, что я на правильном пути, но я не могу получить вид, чтобы обновить после нажатия кнопки.
Вот моя модель list.rb, где я определил метод order_list:
def order_list(sort_by)
if sort_by == 'title' || sort_by.blank?
self.movies.order(title: :asc)
elsif sort_by == 'rating'
self.movies.order(rating: :asc)
else
self.movies.order(created_at: :asc)
end
end
А вот мое действие контроллера для списков # show:
def show
@list.movies.order_list(params[:sort_by])
end
Я также включил :sort_by
в мои разрешенные параметры.
И, наконец, вот моя кнопка link_to
в show.html.erb для моих списков:
<%= link_to "Sort By Title", list_path(sort_by: 'title'), class: 'btn btn-secondary btn-sm btn-space' %>
Мой show.html.erb:
<div class="container-fluid text-center">
<h2><strong><%= @list.name %></strong></h2>
</div>
<div class="text-center">
<h2><strong><% @list.average_rating.to_i.ceil.times do %></strong></h2>
<span><%= fa_icon "star" %></span>
<% end %>
</div>
<div class="container-fluid text-center">
<span>
<%= link_to "Sort By Title", list_path(@list.id, sort_by: 'title'), class: 'btn btn-secondary btn-sm btn-space' %>
<button class="btn btn-sm btn-space btn-secondary" id="sort-ratings">Sort By Rating</button>
</span>
</div>
<div class="card-deck text-center" id="card-deck">
<% @list.movies.each do |m| %>
<div class="card">
<img src="<%= m.poster %>" alt="No poster found." class="card-img-top">
<div class="card-body">
<h5 class="card-title"><%= m.title %></h5>
<p class="card-text"><%= m.genre %></p>
<p class="card-text">Director: <%= m.director %></p>
<p class="card-text"><%= m.plot %></p>
</div>
<div class="card-footer">
Rating: <% m.rating.times do %>
<span><%= fa_icon "star" %></span>
<% end %>
<div class="btn-top">
<span class="btn-group">
<%= button_to "Edit movie", edit_movie_path(m), method: 'get', class: 'btn btn-primary btn-sm btn-space' %>
<%= button_to "Delete movie", movie_path(m), method: 'delete', controller: 'movies', class: 'btn btn-danger btn-sm btn-space', data: { confirm: "Are you sure?"} %>
</span>
</div>
</div>
</div>
<% end %>
</div>
Идея состоит в том, что при нажатии кнопки sort_by: 'title' передается в мои параметры, а затем я вызываю метод order_list в моих фильмах вэтот список, а затем представление обновляется с отсортированным списком.На данный момент параметры выглядят хорошо при нажатии кнопки, но представление не обновляется.Что мне не хватает?Есть ли лучший способ сделать это?