试图在Rails中破译一个苗条的视图

时间:2017-04-21 19:09:47

标签: ruby-on-rails slim-lang

Rails 3.2

我继承了一个使用SLIM的Rails应用程序。我正在努力加快SLIM的速度,但我在视图中的一个语句中遇到了一些麻烦:

= f.select :location_ids, locations, {}, { multiple: true}

这是表单的一部分,您可以从中选择不同的位置。

:locations_id将返回一个数组

locations是包含要从中选择的位置的数组(我知道它在代码中的位置)

{multiple:true}允许用户进行多项选择,如果设置为false,则会将其限制为单个选择

几个问题:

  1. 的附加空{}是多少?
  2. 如果用户只进行一次选择,那么:location_ids是否总是作为数组返回?

  3. 编辑:

    使用原文:

    = 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"
    

    一个字符串。

1 个答案:

答案 0 :(得分:0)

编辑澄清,对不起,虽然写了我的答案,但我中途分心:

首先,是的,{}什么都不做。它是"选项"的地方。根据文档,你可以将include_blank: true放在那里,但由于它是空的哈希,所以没有任何事情发生。通常我会给它nil或将其留空。

对于你的第二个问题,就像你在下面的评论中所说,多个true提交为数组,false提交为字符串。没什么'太喜欢那里了。

更广泛地说,slim最终编译成html.erb文件,所以你真的只是在看

<%= f.select(:location_ids, locations, {}, { multiple: true}) %>

刚刚清理过。