【问题标题】:Ruby on rails simple form text field value is overridden by default valueRuby on rails 简单表单文本字段值被默认值覆盖
【发布时间】:2015-07-23 04:20:23
【问题描述】:

我正在使用一个简单的表单,比如它有一个带有默认值的文本字段。一旦用户设置了他们想要的值,默认值应该被用户想要的值覆盖。但是每次用户打开表单进行编辑时,他们都会一次又一次地看到默认值:

<%= f.input :notes, input_html: {:value => @order_f.decorate.template_message, rows: 12} %>

【问题讨论】:

    标签: ruby-on-rails ruby twitter-bootstrap simple-form


    【解决方案1】:

    尝试设置一个占位符,而不是设置一个值:

    <%= f.input :notes_to_deliverer, placeholder: @order_f.decorate.deliverer_template_message, input_html: {rows: 12} %>
    

    【讨论】:

    • 只是为了澄清为什么会发生这种情况:保存的值很可能是用户输入的被覆盖的值,但是当您下一次呈现表单时,您会重新-在页面渲染上设置:value 选项。如果您希望在用户不输入任何内容的情况下设置默认值,我会考虑在您的数据库中设置default,或者如果它为空白,则在保存之前设置它的 ActiveRecord 回调。
    【解决方案2】:

    如果你不需要占位符,那么你可以这样做:

    <%= f.input :notes_to_deliverer, input_html: {:value => object.notes_to_deliverer.present? ? object.notes_to_deliverer : @order_f.decorate.deliverer_template_message, rows: 12} %>
    

    这里是您为其创建了form 的对象。另外请确保在提交表单时将此值保存在数据库中。如果假设这是您要存储的默认值,我的意思是如果用户没有输入任何值,那么您需要存储它,那么最好在数据库端使用默认值。您可以在迁移文件中设置它。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多