Я застрял в том, что хотя мой параметр массива захватывается, он не может вставить его в базу данных. Я не получаю ошибку параметров, которые не были пропущены, или что-то еще. Он просто не распознает массив при вставке в БД.Вставка блока checkbox в базу данных
То, что я хотел бы сделать: Захват любой ящик, проверяется выключен, и вставить данные в отдельных строк в базу данных.
Вот что у меня есть:
/подписаться/категории/2
<div>
<%= simple_form_for @subscription do |f| %>
<div class="form-inputs">
<%= f.hidden_field :dashboard_id, value: 1 %>
<%= f.hidden_field :category_id, value: @category.id %>
<%= f.collection_check_boxes :feed_id, Feed.where("category_id = ?", @category), :id, :name %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
</div>
CategoriesController
def show
@subscription = Subscription.new
end
SubscriptionsController
def subscription_params
params.require(:subscription).permit(:dashboard_id, :category_id, :feed_id => [])
end
Когда представлен, здесь й е консольный вывод:
Processing by SubscriptionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Zw2VkwujDLQjV4krjPF8N1EiYo5L/XOrUwedlHCvwB0=", "subscription"=>{"dashboard_id"=>"1", "category_id"=>"2", "feed_id"=>["3", "4", ""]}, "commit"=>"Create Subscription"}
(0.2ms) BEGIN
SQL (1.6ms) INSERT INTO `subscriptions` (`category_id`, `created_at`, `dashboard_id`, `updated_at`) VALUES (2, '2014-01-06 02:17:41', 1, '2014-01-06 02:17:41')
(116.6ms) COMMIT
Redirected to http://localhost:3000/subscriptions/3
Completed 302 Found in 173ms (ActiveRecord: 119.3ms)
Два вопроса:
- Почему есть дополнительный "" для моего FEED_ID массива? (Только 2 возможных флажка)
- Почему я не собираю массив, чтобы вставить его в базу данных?
Спасибо!
У вас есть attr_accessible: feed_ids в вашей модели? – Danny
Сильные параметры перечислены выше. Я использую feed_id, а не feed_ids. Когда я использую feed_ids, он указывает, что атрибут не существует. –