我剛剛從Rails 2.1升級到Rails 2.3.2,並注意到在輸入字段上使用:disabled
選項的問題。正確使用Rails 2.3中text_field的disabled選項?
此前,我們將此選項用作布爾值,因此我們將指示是否要基於對象上的方法禁用字段,例如,
f.text_field :amount, :disabled => @my_object.is_disabled?, :class => 'my_class'
這工作對Rails 2.1很好 - 如果is_disabled?
返回true,表單字段被禁用,否則就不是。
但是在Rails 2.3中,情況並非如此。無論:disabled
的值如何,表單域都被禁用。
這是否意味着我得把一個if
聲明在我f.text_field
聲明如:
<% if @my_object.is_disabled? %>
<%= f.text_field :amount, :disabled => 'disabled', :class => 'my_class' %>
<% else %>
<%= f.text_field :amount, :class => 'my_class' %>
<% end %>
當然我在這裏失去了一些東西?
我不明白這一點。在我上面的例子中,@ my_object.is_disabled?實際上是我自己在對象上的自定義方法。實際的方法名稱是「def is_locked?」。 – Olly 2009-05-20 22:09:45