Ruby on rails rails中带有3个参数的select输入的选项数组
我的问题一定很简单,我在我的应用程序中使用了filterrific和postgis,但我认为你不需要知道这些来回答我的问题。因此,对于那些不知道filterrific的人,我们可以使用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
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