Я пытаюсь сохранить некоторые данные в моей модели, используя collection_select, но это не работает, и я не понимаю, почему. Я попытался использовать collection_check_boxes, которые работают легко. Я использую подход HABTM, и я уверен, что мои файлы model.rb закодированы правильно, поэтому я думаю, что что-то в моем коде представления ниже не правильно.
Пожалуйста, я могу получить некоторую помощь
- --- НИЖЕ НЕ РАБОТАЕТ
<div class="form-group control col-md-12 mb-4">
<%= form.label :category, 'Pick A Category Most Appropriate' %>
<div class= 'is-focused field has-addons control is-expanded select is-fullwidth'>
<%= form.collection_select :category_ids , Category.all, :id, :name %>
</div>
</div>
---- НИЖЕ РАБОТАЕТ ОК!
<div class="field">
<%= form.label "Pick A Category Most Appropriate" %><br />
<%= form.collection_check_boxes :category_ids, Category.all, :id, :name do |b| %>
<div class="collection-check-box">
<%= b.label %>
<%= b.check_box %>
</div>
<% end %>
</div>
Как видно ниже, я получаю недопустимую ошибку, но не при использовании collection_check_boxes
Started PATCH "/listings/1" for ::1 at 2020-01-07 20:33:13 +0000
Processing by ListingsController#update as HTML
Parameters: {"authenticity_token"=>"Y/rvJ3EcwV6iioSV8fXUkkwxRRiZ7o8ZV94sGS5G3liYnghcef2AWBc50g5gX4ULhmGyp163vtVfRAgil8gnMA==", "listing"=>{"name"=>"New Listing", "description"=>"This is a new listing", "category_ids"=>"1", "end_date(1i)"=>"2020", "end_date(2i)"=>"1", "end_date(3i)"=>"6", "end_date(4i)"=>"22", "end_date(5i)"=>"57"}, "commit"=>"Update Listing", "id"=>"1"}
Listing Load (4.8ms) SELECT "listings".* FROM "listings" WHERE "listings"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
↳ app/controllers/listings_controller.rb:69:in `set_listing'
Unpermitted parameter: :category_ids
Redirected to http://localhost:3000/listings/1
Completed 302 Found in 30ms (ActiveRecord: 4.8ms | Allocations: 1492)
Started GET "/listings/1" for ::1 at 2020-01-07 20:33:13 +0000
Processing by ListingsController#show as HTML
Parameters: {"id"=>"1"}
Listing Load (0.6ms) SELECT "listings".* FROM "listings" WHERE "listings"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
↳ app/controllers/listings_controller.rb:69:in `set_listing'
Rendering listings/show.html.erb within layouts/application
Rendered listings/show.html.erb within layouts/application (Duration: 1.1ms | Allocations: 313)
[Webpacker] Everything's up-to-date. Nothing to do
Completed 200 OK in 50ms (Views: 44.4ms | ActiveRecord: 0.6ms | Allocations: 5953)
ОБНОВЛЕНИЕ ДЕЙСТВИЯ ОТ КОНТРОЛЛЕРА
def update
respond_to do |format|
if @listing.update(listing_params)
format.html { redirect_to @listing, notice: 'Listing was successfully updated.' }
format.json { render :show, status: :ok, location: @listing }
else
format.html { render :edit }
format.json { render json: @listing.errors, status: :unprocessable_entity }
end
end
end
СИЛЬНЫЕ ПАРАМЕТРЫ
def listing_params
params.require(:listing).permit(:name, :description, :end_date, category_ids:[])
end