1

「新しい製品ページの追加」があり、データベース テーブル「jos_stockmovement」にstart_week年と週のデータを含む「 」フィールドがあります。

私の "Add New Product" ページには、"2012/36" のような年と週を保持する "Start Week" という名前のフィールド ドロップダウン リストがあります。

過去の週は表示できるが、現在の週しか選択できないようにしたい。

これが私のコードです:

<td colspan="99">
  <%= fld.select :start_week, options_for_select(
    StockMovement.order("year DESC, week DESC").map { | val |
      [ "#{ val.year }/#{ val.week }", val.id ]
      },
      :selected => @product.start_week
    ),
    :class => "ddl_SW"
  %>
</td>
4

1 に答える 1

1

あなたがしたいことは、次のように、無効な属性を過去の週のオプションに追加することです

<select name="post[stock_movement]">
  <option value="1">Present</option>
  <option value="2" disabled="disabled">Past</option>
  <option value="3" disabled="disabled">Past</option>
</select>

あなたがしようとしていたようにoptions_for_selectを使用して、Rails3でこれを行うことができます(Rails2ではできないと思います)。

stock_movement.rb

# not sure about the scope, maybe need to put in a lambda ?
scope :option_tags, order("year DESC, week DESC").map(&:option_tag)

def before_now?
  # your test to know if the thing is before today or not
end

def option_tag
  ["#{ stock_movement.year }/#{ stock_movement.week }",
   val.id,
   before_now? ? {:disabled => :disabled} : {}]
end

your_view.rb

<td colspan="99">
  <%= fld.select :start_week,
                 options_for_select(StockMovement.option_tags,
                                    :selected => @product.start_week),
                 :class => "ddl_SW" -%>
</td>

どのようにそのことについて?私はそれをテストできませんでしたが、大丈夫なはずです。

于 2012-08-29T05:27:57.780 に答える