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 替换为您可能已有的实例变量。