2012-08-29 299 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> 

怎么样?我无法测试它,但应该没问题。