У меня есть контроллер, который управляет списком Post
, и я добавил в него фильтр. Посты имеют rating
(0-5 баллов). Фильтр позволяет пользователю вводить оценку, которую они хотят видеть, и отображает введенный рейтинг и выше.Как обновить переменную контроллера Rails на странице обновления?
Например, у меня есть 10 сообщений, а 7 из них имеют рейтинг 3.5 и выше. Если пользовательские входы 3.5
в рейтинге фильтр, он отображает только 7 сообщений с соответствующей оценкой.
Вот код:
index.html.erb
...
<%= form_tag posts_path, method: :get, class: "form-inline" do %> <!-- form_tag on posts path (index), use get method since we are displaying results and not altering/ submitting new data -->
<div class="rating form-group">
<%= label_tag :rating %>
<%= number_field_tag :rating, params[:rating], step: 0.5, min: 0, max: 5, class: "form-control" %>
<%= submit_tag "Search", name: nil, class: "btn btn-primary"%>
</div>
<% end %>
...
Вот мой индекс:
def index
@posts = Post.all
@posts = Post.where("rating >= ?", params["rating"]) if params["rating"].present?
end
Моя проблема, я хочу, чтобы дать пользователям легкость удаления фильтра, когда они обновить страницу. Как я могу удалить фильтр каждый раз, когда пользователь обновляет страницу, чтобы снова отобразить все 10 сообщений? Прямо сейчас, если я хочу снова отобразить все 10 сообщений после создания фильтра, мне нужно либо перейти в поле поля, либо удалить номер 3.5
, который я ввел ранее, и повторно отправить форму, или мне нужно вручную изменить URL-адрес от http://localhost:3000/posts?utf8...&rating=3
до http://localhost:3000/posts
; Я думаю, было бы удобнее для пользователей просто обновлять страницу.
Я думаю, я могу перефразировать его как, как я могу изменить свой контроллер от @posts = Post.where...
до @posts = Post.all
еще раз, когда пользователь обновит страницу?
Поскольку 'rating' получает передается в URL, и обновление будет включать в себя тоже (как вы отмечаете). Если вы слишком творчески меняете свой URL с условными обозначениями, вы попадаете на некоторую болотистую территорию управления государством. Легкое обходное решение: как насчет добавления кнопки «Очистить фильтры»? Он просто представляет вашу форму фильтра без параметра «рейтинг». – anyarms
@Iggy, я удалил свой ответ, потому что вам потребуется изменить форму на запрос на отправку. Вам это нужно, чтобы получить запрос? – chester
@chester, это не обязательно. Я рассмотрю все варианты, если он достигнет аналогичного результата! Большое спасибо :) – Iggy