Rails形成对象的使用文本字段

时间:2015-04-20 07:35:50

标签: ruby-on-rails forms

我有一个带有代码属性(字符串)的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?

2 个答案:

答案 0 :(得分:1)

是的,只需将其设置为文字并添加正确的input_html值:

= f.input :discount_code, as: :text, input_html: { value: '' }

答案 1 :(得分:0)

您可以在预订表中使用discount_code字段,因为存在has_one关系且只有一个属性作为代码。

您当前的工作方式仅适用于您在booking_code上下文中包含更多属性的情况。