В моем _form.html.erb
у меня есть вложенные поля, где для предложения я хотел бы сохранить несколько типов скидок со значениями:
<%= f.fields_for @offer.discounts do |discount| %>
<% I18n.t(:discount_type).each do |type| %>
<div class="form-group row discount-list">
<label class="col-sm-8 control-label">
<%= discount.label I18n.t("discount_type.#{type[0]}") %><br/>
</label>
<div class="col-sm-4">
<%= discount.hidden_field :discount_type, value: type[0] %>
<%= discount.number_field :value,
value: (@offer.new_record? ? '0.00' : discount.value),
class: "form-control allow_numeric" %>
</div>
</div>
<% end %>
<% end %>
На данный момент моя форма заполнена правильно, как я хотел бы, однако значения не сохраняются, так как:
- в своих параметрах я вижу только 1 из 3 типов скидок:
"seller_discount"=>{"discount_type"=>"special", "value"=>"5"}
- есть ошибка
Unpermitted parameter: :seller_discount
- записи не сохраняются
Моя Seller::Offer
модель выглядит так:
has_many :offer_discounts, class_name: "Seller::OfferDiscount"
has_many :discounts, class_name: "Seller::Discount", through: :offer_discounts, inverse_of: :offers
accepts_nested_attributes_for :discounts, allow_destroy: true
Мой контроллер прост как:
def new
@offer = Seller::Offer.new
end
private
def offer_params
params.require(:seller_offer).permit(
:company_id, :name, :base_price,
discounts_attributes: [:id, :discount_type, :value, :_destroy]
)
end
До сих пор я пробовал разные идеи из Rails docs , однако не повезло. Возможно, в моем конкретном случае в твисте я пытаюсь перебрать I18n.t(:discount_type)
поле ввода ввода для каждого типа скидки (ключ покупки).
Я буду рад любому совету, как решить эту проблему. Спасибо!