Rails grouped_collection_select value_method с параметрами - PullRequest
0 голосов
/ 04 марта 2020

Есть ли способ использовать grouped_collection_select value_method с параметрами в Rails?

Я пытаюсь отфильтровать пару опций на основе current_user (эффективно используя что-то вроде : signed_by(current_user)) но мне трудно передать его.

<%= f.grouped_collection_select :author_id, Author.posts, :signed_by, :title, :id, :email %>

Есть идеи?

1 Ответ

0 голосов
/ 05 марта 2020

Невозможно передать параметры в value_method в этом случае, потому что опция value_method это «имя метода, который при вызове дочернего объекта члена коллекции возвращает значение, которое будет использоваться как содержание его тега ". Другими словами, это просто строка или символ, который будет вызываться в коллекции Author.posts.

Если вы пытаетесь отфильтровать некоторые параметры, я бы предложил отфильтровать их из коллекции, а затем передать отфильтрованную коллекцию этому методу. Что-то вроде:

# author_helper.rb
def filtered_author_posts
  Author.posts.where.not(signed_by: current_user)
end
<%= f.grouped_collection_select :author_id, filtered_author_posts, :signed_by, :title, :id, :email %>
...