У меня есть следующая форма, которая пытается загрузить флажки с метками для всех регионов и разрешить их сохранение в логотипах на странице формы логотипа.
= tb_form_for [:admin, @logo],
remote: true,
data: { errors: :inline, success: admin_logos_path } do |f|
= tb_form_errors(f.object, :base)
= f.tb_text_field :name
= f.tb_check_box :home_page, class: 'checkmark'
= f.tb_file_field :logo_photo
= image_tag @logo.logo_photo, style: 'padding-left: 180px; padding-bottom: 20px;' if @logo.logo_photo.present?
= f.collection_check_boxes :region_id, Region.all, :id, :name, checked: Region.all.map(&:id) do |x|
div
= x.check_box
= x.label
= f.tb_save_buttons('Logo', admin_logos_path)
Страница загружается правильно, но появляется ошибка с сохранением. В итоге получается
ActionController :: UnpermittedParameters (найден недопустимый параметр:: region_id)
Круто, поэтому я проверяю свой LogosController и у меня есть следующее:
class LogosController < ApplicationController
before_action :load_logo, only: [:show, :edit, :update, :destroy]
def create
@logo = Logo.new(logo_params)
flash[:notice] = 'Created' if @logo.save
respond_with @logo
end
def edit
respond_with @logo
end
def update
flash[:notice] = 'Updated' if @logo.update_attributes(logo_params)
respond_with @logo
end
private
def logo_params
params.require(:logo).permit(:name, :home_page, :user, :region, :logo_photo, :region_id, :user_id)
end
end
Я пробовал несколько вариантов первого передаваемого аргумента:
найден недопустимый параметр:: Region :: ActiveRecord_Associations_CollectionProxy: 0x00007f81a79a81e0>
найден недопустимый параметр:: регион
обнаружен недопустимый параметр:: Logo: 0x00007f81a34da8
- @logo.region_id заканчивается неправильным запросом
ожидаемый массив (получил Rack :: QueryParser :: Params) для параметра `logo '
Как мне точно поразить это?
Edit:
Из журнала:
Parameters: {"id"=>"12"}
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
(0.2ms) BEGIN
SQL (0.5ms) UPDATE "users" SET "perishable_token" = $1, "last_request_at" = $2, "updated_at" = $3 WHERE "spud_users"."id" = $4 [["perishable_token", "aFl2KBnsphPP4I6CwXO2"], ["last_request_at", "2018-08-31 15:48:15.999796"], ["updated_at", "2018-08-31 15:48:16.000920"], ["id", 1]]
(5.4ms) COMMIT
Logo Load (0.5ms) SELECT "logos".* FROM "logos" WHERE "logos"."id" = $1 LIMIT $2 [["id", 12], ["LIMIT", 1]]
Rendering admin/logos/edit.html.slim within layouts/admin/detail
Region Load (0.5ms) SELECT "regions".* FROM "regions"
CACHE Region Load (0.0ms) SELECT "regions".* FROM "regions"
Rendered admin/logos/_form.html.slim (111.2ms)
Журнал при отправке формы:
Started PATCH "/admin/logos/12" for 127.0.0.1 at 2018-09-04 09:02:43 -0400
Processing by Admin::LogosController#update as JSON
Parameters: {"utf8"=>"✓", "logo"=>{"name"=>"Mr-T", "home_page"=>"1", "region_id"=>["", "1", "3", "4", "2"]}, "commit"=>"Save Logo", "id"=>"12"}
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
Logo Load (0.2ms) SELECT "logos".* FROM "logos" WHERE "logos"."id" = $1 LIMIT $2 [["id", 12], ["LIMIT", 1]]
Completed 500 Internal Server Error in 4ms (ActiveRecord: 0.5ms)
ActionController::UnpermittedParameters (found unpermitted parameter: :region_id):
app/controllers/admin/logos_controller.rb:48:in `logo_params'
app/controllers/admin/logos_controller.rb:32:in `update'