У меня есть приложение Rails 5.2.1 с фильмами и категориями.Они связаны друг с другом посредством отношения has_and_belongs_to_many
с таблицей соединений.
Попытка сделать следующее: на странице index
для фильмов я хочу отфильтровать коллекцию фильмов, показаннуюфлажки категории.Я могу правильно отображать флажки для категорий, но мне трудно получить информацию о том, какие флажки отмечены в параметрах.
/ rails_app/app/views/movies/index.html.slim
h1 Listing movies
= collection_check_boxes(@movies, :category_ids, Category.all, :id, :name) do |box|
= box.check_box
= box.label
= link_to 'Filter movies on category', params.permit!.merge(filter: :category_ids)
table
/ table with movies that will be filtered
Эти :category_ids
кажутся неправильными.Можно ли как-то таким образом получить результаты проверки (для дальнейшей фильтрации с параметрами строки запроса)?Я что-то упустил, например, в моем контроллере?
# rails_app/app/controllers/movies_controller.rb
class MoviesController < ApplicationController
def index
@movies = Movie.all
end
...
def movie_params
params.require(:movie).permit(:name, :rating, category_ids: [])
end
end
Выше приведен пример приложения, созданного с некоторыми скаффолдами и несколькими правками:
rails generate scaffold category name:string
rails generate scaffold movie name:string rating:integer
rails generate migration CreateJoinTableMoviesCategories movie category
bin/rails db:migrate RAILS_ENV=development
-> добавить has_and_belongs_to_many :movies
к классу категории
-> добавить has_and_belongs_to_many :categories
к классу фильма
-> добавить category_ids: []
к movie_params
вФильм класс