views/_form.html.erb
Extra fee field name : <%= text_field_tag :extra_fee_field,nil, placeholder: 'Enter field name',name: "payment_plan[payment_fees[extra_fee_field]][]" %>fees
Extra fee value : <%= text_field_tag :extra_fee_value,nil, placeholder: 'Enter fee value in %',name: "payment_plan[payment_fees[extra_fee_value]][]" %> %
<%= submit_tag "Add",id: "add" %>
controllers/payment_plan_controller.rb
def create
@payment_plan = PaymentPlan.new(payment_plan_params)
@payment_plan.save
结束
private
def payment_plan_params
params.require(:payment_plan).permit(:pay_within_days,:display_active,
:payment_fees=>[:extra_fee_field=>[],:extra_fee_value=>[]])
end
模型/payment_plan.rb
class PaymentPlan < ApplicationRecord
store_accessor :payment_fees
end
以下格式的数据存储:-
payment_fees: {"extra_fee_field"=>"[\"serfere\",\"sfsdfdff\"]", "extra_fee_value"=>"[\"5\",\"7\"]"}, display_active : false, created_at: "2016-07-12 06:41:48", updated_at: "2016-07-12 06:41:48">
请帮帮我。 提前致谢..:)
最佳答案
在尽了最大努力之后,我得到了解决方案,上面所有的代码都是正确的,只是改变了 Controller 的方法
@extra_fee_field = params[:payment_plan][:payment_fees][:extra_fee_field]
@extra_fee_value = params[:payment_plan][:payment_fees][:extra_fee_value]
@payment_plan[:payment_fees] = @extra_fee_field.zip(@extra_fee_value).to_h
在此之后我可以将数据存储在 hstore 数据类型中
关于postgresql - 如何使用多个键和值 rails 5 将数据存储在 hstore 数据类型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38322810/