Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails中带有3个参数的select输入的选项数组_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails rails中带有3个参数的select输入的选项数组

Ruby on rails rails中带有3个参数的select输入的选项数组,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我的问题一定很简单,我在我的应用程序中使用了filterrific和postgis,但我认为你不需要知道这些来回答我的问题。因此,对于那些不知道filterrific的人,我们可以使用select输入来过滤数据。所以我们首先需要一个范围,比如说一个城市列表: scope :with_city_id, lambda { |city_ids| where(city_id: [*city_ids]) } 然后我们将一组选项传递给select输入。对于城市列表,它将如下所示: with_city

我的问题一定很简单,我在我的应用程序中使用了filterrific和postgis,但我认为你不需要知道这些来回答我的问题。因此,对于那些不知道filterrific的人,我们可以使用select输入来过滤数据。所以我们首先需要一个范围,比如说一个城市列表:

scope :with_city_id, lambda { |city_ids|
  where(city_id: [*city_ids])
}
然后我们将一组选项传递给select输入。对于城市列表,它将如下所示:

 with_city: City.order('LOWER(name)').map { |e| [e.name, e.id] }
这将生成一个如下所示的数组:

[["Boston", 4], ["Los Angeles", 1], ["Miami", 3], ["New York", 5], ["San Francisco", 2]]
没什么复杂的。现在的问题是,我有一个称为:with_distance的范围,它检查一个球场是否位于一个距离之内

scope :with_distance, -> (lat, lng, distance_in_meters) {...}
它有三个论点,这让我有点困惑。 如果我这样做,我会得到一个错误“错误的参数数(1代表3)”:


编写此选择选项列表的正确方法是什么?任何建议都将不胜感激,提前感谢。

看起来错误是由于
作用域造成的,因为您的
with_distance
接受3个参数,而您只传递了1个参数

我想你可能得改变这个

[['2 km', current_user.lng, current_user.lat, 2000], ['5 km', current_user.lng, current_user.lat, 5000], ['10 km', current_user.lng, current_user.lat, 10000]]
以这种方式,将分别通过以下选项

'2 km', current_user.lng, current_user.lat, 2000
'5 km', current_user.lng, current_user.lat, 5000
'10 km', current_user.lng, current_user.lat, 10000

我试过
[['2 km'],[current_user.lng,current_user.lat,2000],['5 km'],[current_user.lng,current_user.lat,2000],['10 km'],[current_user.lng,current_user.lat,2000]
但它似乎不正确,一切都搞砸了
'2 km', current_user.lng, current_user.lat, 2000
'5 km', current_user.lng, current_user.lat, 5000
'10 km', current_user.lng, current_user.lat, 10000