【问题标题】:Correct use of :disabled option for text_field in Rails 2.3?在 Rails 2.3 中正确使用 text_field 的 :disabled 选项?
【发布时间】:2009-05-20 12:36:35
【问题描述】:

我刚刚从 Rails 2.1 更新到 Rails 2.3.2,并注意到在输入字段上使用 :disabled 选项时出现问题。

以前我们将此选项用作布尔值,因此我们将指示是否要根据对象上的方法禁用字段,例如

f.text_field :amount, :disabled => @my_object.is_disabled?, :class => 'my_class'

这在 Rails 2.1 中可以正常工作——如果 is_disabled? 返回 true,则表单字段被禁用,否则不是。

然而,在 Rails 2.3 中,情况并非如此。无论:disabled 的值如何,都会禁用表单域。

这是否意味着我必须在我的 f.text_field 声明周围添加一个 if 声明,例如:

<% if @my_object.is_disabled? %>
  <%= f.text_field :amount, :disabled => 'disabled', :class => 'my_class' %>
<% else %>
  <%= f.text_field :amount, :class => 'my_class' %>
<% end %>

我肯定在这里遗漏了什么吗?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    他们摆脱了 is_boolean_field?在轨道 2.3 中。它只是 boolean_field 吗?现在。

    所以:

    f.text_field :amount, :disabled => @my_object.disabled?, :class => 'my_class'
    

    应该可以正常工作。

    【讨论】:

    • 我不明白这个。在我上面的例子中,@my_object.is_disabled?实际上是我自己对对象的自定义方法。实际的方法名称是“def is_locked?”。
    • 您是否尝试过执行 :disabled => false 或 :disabled => true 以查看它是否在您的 text_field 上关闭和打开。我不确定为什么如果您的 is_disabled 它将不起作用?方法返回布尔值。
    • Corban - 是的,我的方法返回一个布尔值。如果我添加明确的“:disabled => false”,那么我会得到相同的效果。 Rails 将此代码添加到 HTML:disabled=""。如果 :disabled 的值为 false,我会假设它不应该添加任何内容。
    【解决方案2】:

    请忽略本帖。我遇到的问题实际上是 Javascript。

    添加 :disabled => false 将“disabled=''”添加到正确不会禁用表单字段的表单字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      相关资源
      最近更新 更多