我陷入困境,虽然我的数组参数被捕获,但无法将其插入数据库。我没有收到未经允许的参数错误或任何错误。它只是在插入数据库时无法识别数组。
我想做的:捕获任何已选中的框,并将数据插入为separate行存入数据库。
这是我所拥有的:
/订阅/类别/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>
类别控制器
def show
@subscription = Subscription.new
end
订阅控制器
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 个可能的复选框)
- 为什么我不捕获数组以将其插入数据库?
Thanks!