如何允许用户从 Rails 的多重选择框中选择零个选项?
我有一个带有 options
列的设置模型,并将其设置为使用 serialize :options
进行序列化。在我看来,我有一个多重选择框,使用 select("settings", "options", ['option1','option2','option3'], {}, :multiple => true)< /code> 只要用户至少选择一个选项,它就可以正常工作。但是,如果他们不选择任何选项,则不会提交任何选项,因此选项不会更新。
如何允许用户从 Rails 的多重选择框中选择零个选项?
I have a settings model with a column options
, and set it to serialize with serialize :options
. In my view, I have a multiple selection box, using select("settings", "options", ['option1','option2','option3'], {}, :multiple => true)
which works fine so long as the user selects at least one option. However, if they don't select any options, no options are submitted and so the options aren't updated.
How do I allow the user to select zero options from a multiple selection box in rails?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(4)
如果未发布属性,我不喜欢假设值为空。它破坏了 Rails 期望更新属性的方式,并且如果您将控制器操作也用于 API 和 HTML,则可能会出现问题。我处理此问题的首选方法是在多选之前添加隐藏的输入字段。
<input type="hidden" value="" name="parent_model[my_attribute_ids][]">
如果您使用 JQuery,您可以自动添加这些隐藏的输入字段:
$('select[multiple="multiple"]').each(function(i){
$(this).before('<input type="hidden" name="'+this.name+'" value="" />')
});
我意识到这个答案不是很及时,但我希望这会对有类似问题的人有所帮助。
您可以提供“无”选项。
示例来自: http://api.rubyonrails.org/classes/ActionView/Helpers /FormOptionsHelper.html
select("post", "person_id", Person.all.collect {|p| [ p.name, p.id ] }, {:include_blank => 'None'}, {:multiple => true})
会变成
<select name="post[person_id]" multiple="multiple">
<option value="">None</option>
<option value="1">David</option>
<option value="2" selected="selected">Sam</option>
<option value="3">Tobias</option>
</select>
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
这与 Rails 无关:如果“select”元素中未选择任何内容,html 表单不会将此类参数发送到服务器。但你应该能够在控制器中修复它。像这样的东西
不确定是否有更优雅的解决方案。
That has nothing to do with rails: html form won't send such parameter to server if nothing is chosen in 'select' element. But you should be able to fix it in controller. Something like this
Not sure if there's more elegant solution.