【问题标题】:Ruby on Rails reset value back to nullRuby on Rails 将值重置为空
【发布时间】:2016-08-14 04:56:33
【问题描述】:

以下是我的观点:

<div class="col-xs-3">
    <%= f.select(:require_booking, get_advance_booking.collect {|p| [ p[:require_booking], p[:require_booking] ] }, {include_blank: false} , :class => 'form-control') %>
</div>

<div class="col-xs-3">
    <%= f.text_field :require_days, :class => 'form-control advance-booking', :placeholder => 'How many days?', :disabled=>true%>
</div>

这是我的application_helper.rb

  def get_advance_booking
    ret = [{:require_booking => 'Yes'},{:require_booking => 'No'}]
  end

以下是我的product.rb 模型

class Product < ActiveRecord::Base
enum require_booking: {
        No: 0,
        Yes: 1
    }
end

现在的问题是,如果我选择Yes 选项,文本字段将被启用并且用户可以输入值。在编辑模式下,如果我选择No 选项,如何将文本字段值设置回NULL 并保存到数据库?目前,即使我设置了值NO,我仍然得到我之前设置的值。谢谢!!

【问题讨论】:

  • 你应该使用javascript,因为它是客户端逻辑。

标签: javascript ruby-on-rails ruby


【解决方案1】:

您只能通过 javascript 更改 select 的 value 字段来做到这一点。

例子:

假设您的代码生成以下 html:

<input type="select" value="Yes"></input>
<input type="text" value="EditValue"></input>

要解决这个问题,你需要这样的 javascript(jQuery) 代码:

 $("input[type='select']").change(function() {
     $("input[type='text']").val(' '); });

【讨论】:

    【解决方案2】:

    实际上,您不能将 Null 值分配给表单输入。您可以将其设置为空 '' 。但这对您的情况没有帮助。您可能的解决方案是在选择“否”时禁用该字段。禁用的输入值不会在表单中提交。因此将处理基本情况。 但是,如果您正在更新,则可以在后端处理它。您可以在过滤器之前添加。

    before_filter: check_for_require_days
    
    def check_for_require_days
      params.merge!(require_days: nil) unless params[:require_days].present? 
    end
    

    这将检查该值是否被禁用,而不是它不在表单参数中,因此它将其设置为空。

    【讨论】:

      【解决方案3】:

      只需将 :onchange => "$('#product_require_days').val('')" 添加到您的“require_booking”选择中

      <%= f.select(:require_booking, get_advance_booking.collect {|p| [ p[:require_booking], p[:require_booking] ] }, {include_blank: false} , :class => 'form-control'), :onchange => "$('#product_require_days').val('')" %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-26
        • 2013-09-01
        • 2011-02-13
        • 2014-11-02
        • 1970-01-01
        • 2011-07-22
        • 2021-12-13
        相关资源
        最近更新 更多