【问题标题】:Rails form use text field for objectRails 表单使用文本字段作为对象
【发布时间】:2015-04-20 07:35:49
【问题描述】:

我有一个带有代码属性(字符串)的 DiscountCode 模型。我的预订模型 belongs_to :discount_code。在 Booking 表单中,我不想放一个下拉列表来选择 DiscountCode,我只想要一个字符串字段(使用 SimpleForm):

f.input :discount_code

用户可以在其中键入例如“XMAS2015”。我在控制器的 DiscountCode 对象中转字符串:

new_params[:discount_code] = DiscountCode.find_by code: params[:booking][:discount_code]

...我使用 new_params 来构建我的 Booking。如果没有错误,一切顺利,但如果有并且再次显示表单,则使用对象而不是代码填充字符串字段:

#<DiscountCode:0x0000000baf2d68>

我不能像这样把它转回来:

@booking.discount_code = @booking.discount_code.code

因为@booking.discount_code 应该是 DiscountCode 而不是字符串。

有没有办法将对象改回表单中的字符串,或者我应该使用另一个字段名称,如 discount_code_text?

【问题讨论】:

    标签: ruby-on-rails forms


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      您目前的做法仅适用于您在 booking_code 的上下文中具有更多属性的情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-06
        • 2020-02-04
        • 2014-04-22
        • 2012-04-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多