Rails:在为表单上的 collection_select 下拉菜单设置默认值时使用 selected =>。但是当我编辑项目时它默认返回
Rails: Using selected => when setting a default value for my collection_select drop down on a form. But when I edit the item it defaults back
我被这个难住了..我正在使用这个:
<%= f.collection_select :project_type, @project_types, :name, :name, {:selected => "Other"}, class: 'form-control selectpicker', data: { 'live-search' => 'true' } %>
在用户创建新项目时将项目类型设置为默认。但是当我编辑该项目时,它默认返回到任何 :selected => 设置为。
我的问题是,是否可以在“编辑”或“创建”中添加某种类型的条件,而这些条件在我编辑时不会更改我的数据。或者是否有不同的方法来设置与 :selected =>
具有不同行为的默认值
我认为最好的方法是在对象本身上设置默认值并从 collection_select
中删除 selected
选项,因此在创建新对象的控制器操作上你可以设置它:
Model.new(project_type: 'other')
您还可以在数据库本身中设置默认值,这应该很有希望或使用一些 ActiveRecord 方法来做到这一点:
Rails: How can I set default values in ActiveRecord?
或者另一种选择是像这样在 collection_select
上设置它:
<%= f.collection_select :project_type, @project_types, :name, :name, { selected: (f.object.project_type || "Other") }, class: 'form-control selectpicker', data: { 'live-search' => 'true' } %>
将 f.object
替换为您可能已有的实例变量。
我被这个难住了..我正在使用这个:
<%= f.collection_select :project_type, @project_types, :name, :name, {:selected => "Other"}, class: 'form-control selectpicker', data: { 'live-search' => 'true' } %>
在用户创建新项目时将项目类型设置为默认。但是当我编辑该项目时,它默认返回到任何 :selected => 设置为。
我的问题是,是否可以在“编辑”或“创建”中添加某种类型的条件,而这些条件在我编辑时不会更改我的数据。或者是否有不同的方法来设置与 :selected =>
具有不同行为的默认值我认为最好的方法是在对象本身上设置默认值并从 collection_select
中删除 selected
选项,因此在创建新对象的控制器操作上你可以设置它:
Model.new(project_type: 'other')
您还可以在数据库本身中设置默认值,这应该很有希望或使用一些 ActiveRecord 方法来做到这一点:
Rails: How can I set default values in ActiveRecord?
或者另一种选择是像这样在 collection_select
上设置它:
<%= f.collection_select :project_type, @project_types, :name, :name, { selected: (f.object.project_type || "Other") }, class: 'form-control selectpicker', data: { 'live-search' => 'true' } %>
将 f.object
替换为您可能已有的实例变量。