所以我有以下代码:
def new
@all_areas = Area.all
@area = Area.new
end
我传入 all_areas 的原因是表单中的下拉框需要它,使用 mongoid 和区域可以递归地嵌入到另一个区域中。
我的表单有以下代码:
<% if @all_areas %>
<%= f.label :parent_area %>
<%= f.collection_select(:parent_area, @all_areas, :_id, :name, prompt: "Select a Parent...") %>
<% end %>
但是,当我提交“无效值,即空白名称”时,“新”页面不会呈现选择框来选择父级。
这里发生了什么?这是一个错误吗?
我的创建操作非常简单,如果验证失败,我只需执行以下操作:
else
render 'new'
为什么@all_areas 没有第二次传递给视图?我实际上已通过将创建操作中的代码更改为以下内容来修复它:
else
@all_areas = Area.all
render 'new'
但这很令人惊讶,除非我遗漏了什么?