我有一个“添加新产品页面”,我在数据库表“jos_stockmovement”,“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>
答案 0 :(得分:1)
您要做的是将disabled属性添加到过去一周的选项中,例如
<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>
怎么样?我无法测试它,但应该没问题。