我对选择标签中的空选项使用“解决方法”,它可以帮助您:
:type => :select, :collection => @my_colletion || [[I18n.t('common.none'), -1]]
当@my_colletion
为 nil 时,它显示一个名为 'None' 且 id = -1 的选项(这在后端处理起来还不错)。
这部分代码假设@my_collection
是一个数组数组,如[ [key, value], [key, value], ... ]
OR nil。
虽然,如果您希望您的MyModel.all
收藏符合 best_in_place 的条件,您可以使用以下内容:
@my_collection = MyModel.all.map{ |object| [object.name, object.value] }
# => this returns an array like [ [key, value], [key, value], ... ]
# => returns an empty array (NOT nil) if there is no entry in the DB
关于 -1 id:
将 -1 id 用作“none”很容易,因为您不需要显式处理值 nil(测试等)。使用 -1 id,您可以使用以下内容:
MyModel.where(id: params[:id]).first # => Returns the first object that has the params[:id]
# if params[:id] is -1, it will return nil and not raise an error.
我希望它有帮助:)