У меня есть две модели. Место проведения и категории. Они связаны друг с другом как has_and_belongs_to_many
Rails 4 has_and_belongs_to_many
Категории предварительно заполнены и в форме, где я хочу отобразить мульти-выбор, позволяющий выбирать категории для места встречи при добавлении места проведения.
venue.rb
class Venue < ActiveRecord::Base
has_and_belongs_to_many :categories
end
category.rb
class Category < ActiveRecord::Base
has_and_belongs_to_many :venues
end
Регистрация Таблица
create_table "categories_venues", id: false, force: true do |t|
t.integer "category_id", null: true
t.integer "venue_id", null: true
end
add_index :categories_venues, ["category_id", "venue_id"]
Большинство exampl es онлайн показывают, как создавать модели с помощью другого. Я не могу понять, как выбрать параметр multi select, где пользователь может выбрать одну или несколько категорий и автоматически сохранить их.
Должен ли я использовать builder
в контроллере? и добавить accepts_nested_attributes_for
?
Является новым для Rails и пытаюсь выполнить поиск и чтение документов.
Контроллер
def new
@venue = Venue.new
@categories = Category.all.order('name ASC')
@countries = Country.all.order('name ASC').limit(25)
@regions = Region.all.order('name ASC').limit(25)
@cities = City.all.order('name ASC').limit(25)
#render plain: @categories.inspect
end
Посмотреть
<div class="form-group">
<%= f.label :parent_id, "Categories:<span class='mandatory'>*</span>".html_safe,:class => 'col-sm-2 control-label' %>
<div class="col-sm-3">
<%= f.collection_select(:category_ids, @categories, :id, :name, { :prompt => true }, { :class => 'select-search', :selected => params[:user_id], :data => { :placeholder => 'Please Choose' } }) %>
<%= show_errors(@venue, :category_ids).html_safe %>
</div>
</div>
является «через» для has_many ? когда я назначаю habtm с соглашениями об именах, я не думаю, что мне нужно сделать это правильно? –
До тех пор, пока отношение происходит через таблицу соединений, вы должны сказать рельсы, что с помощью: через – tebayoso
ладно спасибо. в представлении я собираю все категории и передаю их: category_ids, но когда я пытаюсь отправить и сохранить его, он ожидает, что массив, но получит строку. –