这是我现在使用的一段代码:
<%= f.select :project_id, @project_select %>
如何修改它使其默认值等于params[:pid]
页面加载时?
这应该这样做:
<%= f.select :project_id, @project_select, :selected => params[:pid] %>
使用当前实例的正确属性(例如@work.project_id
):
<%= f.select :project_id, options_for_select(..., @work.project_id) %>
Rails 3.0.9
select options_for_select([value1, value2, value3], default)
所有这些答案的问题是,即使您正在尝试编辑记录,它们也会将字段设置为默认值.
您需要将默认值设置为现有值,然后仅在没有值时将其设置为实际默认值.像这样:
f.select :field, options_for_select(value_array, f.object.field || default_value)
对于不熟悉f.object.field
您的人,请始终使用,f.object
然后在其末尾添加您的字段名称.
试试这个:
<%= f.select :project_id, @project_select, :selected => f.object.project_id %>
如果params [:pid]是一个字符串,如果它来自一个表单,那么,你可能需要使用它
params[:pid].to_i
在选择列表中选择正确的项目
我找到了解决方案,我发现我在RoR方面很缺乏经验.
在管理上述视图的控制器内添加:
@work.project_id = params[:pid] unless params[:pid].nil?
<%= f.select :project_id, @project_select, :selected => params[:pid] %>