Rails 5.2: коллекция с помощью has_many через форму - PullRequest
0 голосов
/ 14 января 2020

У меня есть настройка, где author имеет множество значений от sources (и наоборот) до authorships.

. Я работаю над исходной формой и хотел бы, чтобы в раскрывающемся меню выбора Пользователь может выбрать нескольких авторов, которые будут связаны с данным источником.

Моя author модель выглядит следующим образом:

class Author < ApplicationRecord

  belongs_to :user
  has_many :authorships
  has_many :sources, through: :authorships

  def last_first
    "#{last_name}, #{first_name}"
  end

  ...
end

Моя source модель:

class Source < ApplicationRecord

  belongs_to :user
  has_many :authorships
  has_many :authors, through: :authorships

  ...

end

И моя authorship модель:

class Authorship < ApplicationRecord
  belongs_to :source
  belongs_to :author
end

Сначала я попробовал:

    <%= f.collection_select(:author_ids, Author.all, :id, :last_first, multiple: true) %>

Но я получил эту странную ошибку: Could not find the source association(s) "author" or :authors in model Authorship. Try 'has_many :authors, :through => :authorships, :source => <name>'. Is it one of ?

I проконсультировался со многими сообщениями SO, такими как this , this и this , но безрезультатно.

Может кто-нибудь помочь мне понять, что я? я делаю неправильно? Документация collection_select не сильно поможет.

1 Ответ

0 голосов
/ 15 января 2020

Я решил эту проблему с помощью collection_check_boxes, например:

    <%= f.collection_check_boxes :author_ids, Author.all, :id, :last_first do |b| %>
      <div class="field form-check" style="display: block">
        <%= b.check_box class: "form-check-input" %>
        <%= b.label class: "form-check-label" %>
      </div>
    <% end %>

Не выпадающий список, но он функционален и экономит!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...