我有一个带有代码属性(字符串)的DiscountCode模型。我的预订模型belongs_to:discount_code。在预订表单中,我不想在下拉列表中选择DiscountCode,我只想要一个字符串字段(使用SimpleForm):
f.input :discount_code
用户可以输入例如“XMAS2015”。我在控制器中的DiscountCode对象中转动字符串:
new_params[:discount_code] = DiscountCode.find_by code: params[:booking][:discount_code]
...我使用new_params来构建我的预订。如果没有错误,一切顺利,但如果有,并且表单再次显示,字符串字段将填充对象而不是代码:
#<DiscountCode:0x0000000baf2d68>
我不能这样回头:
@booking.discount_code = @booking.discount_code.code
因为@ booking.discount_code应该是DiscountCode而不是字符串。
是否有任何解决方案可以将对象更改回表单中的字符串,还是应该使用其他字段名称,例如discount_code_text?
答案 0 :(得分:1)
是的,只需将其设置为文字并添加正确的input_html
值:
= f.input :discount_code, as: :text, input_html: { value: '' }
答案 1 :(得分:0)
您可以在预订表中使用discount_code字段,因为存在has_one
关系且只有一个属性作为代码。
您当前的工作方式仅适用于您在booking_code上下文中包含更多属性的情况。