Я пытаюсь узнать отношение has_and_belongs_to_many между моими 2 новыми и простыми моделями Продукт и Автор, где у Продукта может быть много авторов и у автора может быть много продуктов.
Я написал это:
class Author < ActiveRecord::Base
has_and_belongs_to_many :products
end
class Product < ActiveRecord::Base
has_and_belongs_to_many :authors
end
В частичной форме просмотра продуктов у меня есть:
<p>Products</p>
<%= collection_select(:product, :author_ids, @authors, :id, :name, :prompt => " ", :multiple => true) %>
, но когда я нажимаю кнопку обновления, я получаю странное сообщение, которое не могу решить сам:
NoMethodError в ProductsController # обновить неопределенный метод `reject 'для« 1 »: строка
Rails.root: / home / stephane / www / HABTM Трассировка приложения |Framework Trace |Full Trace app / controllers / products_controller.rb: 63: in block in update'
app/controllers/products_controller.rb:62:in
update 'Request
Параметры: {"utf8" => "✓ "," _method "=>" put "," authenticity_token "=> "2GlTssOFjTVZ9BikrIFgx22cdTOIJuAB70liYhhLf + 4 =", "product" => {"title" => "Le tréor des des Templiers", "original_title" => "", "number" => "1", "Added_by" => "", "author_ids" => "1"}, "commit" => "Обновить продукт", "id" => "1"}
Что не так?Есть ли проблема с: product_ids ... Я видел в интернете, что мне нужно набрать "s", но я не уверен в том, что он представляет ....
Как я могу связать таблицу авторы_продуктов сключ, который возвращается из выпадающего меню?(здесь "author_ids" => "1") Thx!
Дополнительная информация: Может быть решена с этой информацией, но без сохранения отношения:
collection_select("sales_agent", "customer_id", @customers, "id", "name")
Предполагается, что у вас былмодель клиента с атрибутом ID и атрибутом имени, это приведет к точно такому же коду.Итак, глядя на значения, которые мы передаем в вызов collection_select:
- Первый параметр - это модель, которая содержит один элемент из коллекции (например, sales_agent)
- Далее следует имя поляв модели, которая ссылается на элемент коллекции, который он содержит (например, customer_id)
- Next - это переменная, содержащая коллекцию элементов, которые мы хотим перечислить (например, @customers)
- Next isатрибут значения тега опции (например, идентификатор клиента)
- Далее следует атрибут отображения тега опции (например, имя клиента)
Итак, я сейчас написал
<p>Products</p>
<%= collection_select(:author, :author_id, @authors, :id, :name, :prompt => " ", :multiple => true) %>
и все заработало, но без сохранения ссылки, на данный момент ... (сохраняется только обновление нормальных полей, а не отношения :-(