У меня есть модальная форма с двумя вариантами выбора
<%= form_with(model: @product_variant_option, remote: request.xhr?, html: {data: {modal: true}}) do |f| %>
<div class="modal-body">
<div class="row">
<div class="form-group col-sm-4">
<%= f.label :product_option_id %>
<%= f.collection_select :product_option_id, ProductOption.all.order("key"), :id, :key, {}, {:onchange => "on_modal_option_change(this)", :class => 'custom-select'} %>
</div>
<div class="form-group col-sm-4">
<%= f.label :product_option_value_id %>
<%= f.collection_select :product_option_value_id, ProductOptionValue.all.order("name"), :id, :name, {}, { :class => 'custom-select'} %>
</div>
<div class="form-group col-sm-1">
<%= f.hidden_field :product_variant_id %>
</div>
</div>
</div>
<div class="modal-footer">
<%= submit_tag("Save", class: "btn btn-primary") %>
</div>
<% end %>
В моем контроллере я только хочу создать
class ProductVariantOptionsController < ApplicationController
respond_to :html, :json
#before_action :set_product_variant_option, only: [:show, :edit, :update, :destroy]
def new
@product_variant_option = ProductVariantOption.new
@product_variant_option.product_variant_id = params[:product_variant_id]
respond_modal_with @product_variant_option
end
def create
@product_variant_option = ProductVariantOption.new(pvo_params)
respond_to do |format|
if @product_variant_option.save
format.html {redirect_to '/product_variants/'+@product_variant_option.product_variant_id.to_s + '/edit', notice: 'Option was successfully created.'}
format.json {render :show, status: :created, location: @product_type}
else
format.html {render :new}
format.json {render json: @product_type.errors, status: :unprocessable_entity}
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_product_variant_option
@product_variant_option = ProductVariantOption.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def pvo_params
params.require(:product_variant_option).permit(:product_variant_id, :product_option_id, :product_option_value_id)
end
end
, как вы видите, также product_option_value_id находится в белом списке
Однако при выполнении запроса product_option_value_id всегда пуст, это принимается на стороне сервера
{"utf8"=>"✓", "authenticity_token"=>"dc4hyqovio2Q84RlwFHzwzYaKHM/Pc9UBLbZLWQewSJ4+UCGxZck5qRsWhgcJVtXyVkOL9vI+KR4nuJbylUAJA==", "product_variant_option"=><ActionController::Parameters {"product_option_id"=>"3", "product_option_value_id"=>"", "product_variant_id"=>"1"} permitted: false>, "commit"=>"Save", "controller"=>"product_variant_options", "action"=>"create"}
Что вызывает то, что не все параметры отправляются на сервер?