Rails 3.2
我继承了一个使用SLIM的Rails应用程序。我正在努力加快SLIM的速度,但我在视图中的一个语句中遇到了一些麻烦:
= f.select :location_ids, locations, {}, { multiple: true}
这是表单的一部分,您可以从中选择不同的位置。
:locations_id将返回一个数组
locations是包含要从中选择的位置的数组(我知道它在代码中的位置)
{multiple:true}允许用户进行多项选择,如果设置为false,则会将其限制为单个选择
几个问题:
?
如果用户只进行一次选择,那么:location_ids是否总是作为数组返回?
使用原文:
= f.select :location_ids, locations, {}, { multiple: true}
这是我在params中得到的:
....“location_ids”=> [“”,“1407948222_686938_location”]
数组,
当我将其更改为:
= f.select :location_ids, locations, {}, { multiple: false}
这是我在params中得到的:
"location_ids"=>"1450908309_866831_location"
一个字符串。
答案 0 :(得分:0)
编辑澄清,对不起,虽然写了我的答案,但我中途分心:
首先,是的,{}什么都不做。它是"选项"的地方。根据文档,你可以将include_blank: true
放在那里,但由于它是空的哈希,所以没有任何事情发生。通常我会给它nil
或将其留空。
对于你的第二个问题,就像你在下面的评论中所说,多个true提交为数组,false提交为字符串。没什么'太喜欢那里了。
更广泛地说,slim最终编译成html.erb文件,所以你真的只是在看
<%= f.select(:location_ids, locations, {}, { multiple: true}) %>
刚刚清理过。