所以我有这个创建表单来创建有一堆字段的时间表,其中一个是季节。季节表有一个名为“is_current”的字段,如果设置为 1,则告诉我们这是当前季节。当创建表单为 display 时,我希望在季节下拉菜单中默认选择当前季节。任何帮助将不胜感激。谢谢。
问问题
1877 次
3 回答
0
我相信它会像
#controller
@seasons = Season.all
@current_season = seasons.detect{ |s| s.is_current==true }
#view
select('schedule', 'season_id', @seasons.collect{ |s| [s.name, s.id] },
:selected => @current_season)
编辑
很抱歉造成误解...我会尝试以下方法:
创建一个named_scope
模型Season
named_scope :current, :conditions => "is_current = true"
并尝试设置此选项
config.columns[:seasons].options = {:selected => Season.current}
我不知道它是否有效。这只是一个镜头。
于 2010-05-06T00:47:17.197 回答
0
您可以:selected
在 form 方法中使用该属性select
,尽管这需要option
标签的值。让我们创建一个简单的下拉菜单,其中包含季节 ID 作为选项值,季节名称作为用户看到的内容,以及默认选择的特定记录,如下所示:
<option value="123" selected="selected">Name of season</option>
<option value="234">Another season</option>
在这种情况下,该:selected
属性将期望123
,因此它知道将其设为默认值。
您可以使用以下代码完成此操作:
控制器:
@seasons = Season.all
@current_season = @seasons.detect{|s| s.is_current == 1}.id
查看(在 form_for 语句中):
<%= f.select :season_id, @seasons.collect {|s| [s.name, s.id]}, :selected => @current_season %>
于 2010-05-06T00:49:57.523 回答
0
我找到了解决方案。您必须在适当的帮助文件中添加一段代码,在我的例子中是 schedules_helper.rb。
def seasons_list
s = Season.find(:all, :order => 'is_current DESC').map{|t| [t.name, t.id]}
end
这将确保当前季节始终是下拉菜单的第一个选项,因此默认情况下被选中。
谢谢大家,您的回答。
于 2010-05-07T01:49:16.253 回答