6

我正在使用一个collection_select 字段,但需要在选项前面加上一些默认选项,它不代表特定的模型记录,并且用于将appropriet 字段设置为NULL。但我就是找不到任何方法来做到这一点。

如果您需要更多信息,请不要急于询问。使用带有标准表单助手的 Rails 3.2.3。

PS我知道我可以做这样的事情:

@parents = ['default_name','nil']
@parents << Model.all.map {|item| [item.name,item.id]}

但我认为还有一种更优雅的方式。

4

3 回答 3

16

有一个 :include_blank 选项可以传递给collection_select辅助方法:

f.collection_select(:author_id, Author.all, :id, :name_with_initial,
                    :include_blank => "Nothing selected")

还有一个类似的选项叫做 :prompt,也可以查看一下。

于 2012-05-04T13:20:50.697 回答
11

您可能可以使用select代替:

f.select(:item_id, @items.collect {|p| [ p.name, p.id ] } + ['Or create a new one like','new'], {:include_blank => 'Please select a item'})
于 2012-05-04T13:03:41.923 回答
1

你认为这样的事情可以接受吗?

collection_select :field1, :field2, @models+[Model.new(name: "default_name")], :name, :id
于 2012-05-04T13:01:14.870 回答