这是我现在使用的一段代码:
<%= f.select :project_id, @project_select %>
Run Code Online (Sandbox Code Playgroud)
如何修改它使其默认值等于params[:pid]页面加载时?
hta*_*ata 215
这应该这样做:
<%= f.select :project_id, @project_select, :selected => params[:pid] %>
Run Code Online (Sandbox Code Playgroud)
小智 124
使用当前实例的正确属性(例如@work.project_id):
<%= f.select :project_id, options_for_select(..., @work.project_id) %>
Run Code Online (Sandbox Code Playgroud)
Che*_*eng 51
Rails 3.0.9
select options_for_select([value1, value2, value3], default)
Run Code Online (Sandbox Code Playgroud)
Mik*_*any 32
所有这些答案的问题是,即使您正在尝试编辑记录,它们也会将字段设置为默认值.
您需要将默认值设置为现有值,然后仅在没有值时将其设置为实际默认值.像这样:
f.select :field, options_for_select(value_array, f.object.field || default_value)
Run Code Online (Sandbox Code Playgroud)
对于不熟悉f.object.field您的人,请始终使用,f.object然后在其末尾添加您的字段名称.
gav*_*vit 21
试试这个:
<%= f.select :project_id, @project_select, :selected => f.object.project_id %>
Run Code Online (Sandbox Code Playgroud)
dan*_*gle 10
如果params [:pid]是一个字符串,如果它来自一个表单,那么,你可能需要使用它
params[:pid].to_i
Run Code Online (Sandbox Code Playgroud)
在选择列表中选择正确的项目
我找到了解决方案,我发现我在RoR方面很缺乏经验.
在管理上述视图的控制器内添加:
@work.project_id = params[:pid] unless params[:pid].nil?
Run Code Online (Sandbox Code Playgroud)
<%= f.select :project_id, @project_select, :selected => params[:pid] %>
Run Code Online (Sandbox Code Playgroud)
我无法让它工作,并发现我不仅需要将“selected”html 属性添加到正确的<option>标签中,而且还需要添加到<select>标签中。MDN 关于 select 标签的 selected 属性的文档说:
selected - 布尔属性指示可以初始选择特定选项。
这意味着代码应该如下所示:
f.select :project_id, options_for_select(@project_select, default_val), html: {selected: true}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
168403 次 |
| 最近记录: |