2012-08-29 192 views
1

我有一個「添加新產品頁面」,我在數據庫表「jos_stockmovement」,「start_week」中有一個字段,其中包含年份和周的數據。自定義選擇選項html屬性

在我的「添加新產品」頁面中,我有一個名爲「Start Week」的字段下拉列表,其中包含年份和星期,例如「2012/36」。

我想讓它過去幾周可以被瀏覽,但只能選擇當前的一週。

這裏是我的代碼:

<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> 

回答

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> 

可以在Rails3中做到這一點(我不不要以爲你可以在Rails2中使用options_for_select

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> 

怎麼樣?我無法測試它,但應該沒問題。