【发布时间】:2022-01-04 16:49:24
【问题描述】:
在 rails 6.1.4 中,我想以 DESC 顺序在 STRIPE 中显示产品的 :nickname。我的意思是我的 VIEW 页面上的 S、M、L,而不是像 Stripe 给我们的随机方式。 在他们的https://stripe.com/docs/api 中,我们似乎无法以简单的方式提出请求。
为此,我查询@compositionsProduct = Stripe::Price.list(product: @composition.product)。它在data 部分返回一个哈希数组:
=> #<Stripe::ListObject:0x3ff733e41c08> JSON: {
"object": "list",
"data": [
{"id":"price_price1","object":"price","active":true,"billing_scheme":"per_unit","created":1635150421,"currency":"eur","livemode":false,"lookup_key":null,"metadata":{},"nickname":"L","product":"prod_prod1","recurring":null,"tax_behavior":"unspecified","tiers_mode":null,"transform_quantity":null,"type":"one_time","unit_amount":4500,"unit_amount_decimal":"4500"},
{"id":"price_price2","object":"price","active":true,"billing_scheme":"per_unit","created":1635150421,"currency":"eur","livemode":false,"lookup_key":null,"metadata":{},"nickname":"S","product":"prod_prod1","recurring":null,"tax_behavior":"unspecified","tiers_mode":null,"transform_quantity":null,"type":"one_time","unit_amount":2500,"unit_amount_decimal":"2500"},
{"id":"price_price3","object":"price","active":true,"billing_scheme":"per_unit","created":1635150421,"currency":"eur","livemode":false,"lookup_key":null,"metadata":{},"nickname":"M","product":"prod_prod1","recurring":null,"tax_behavior":"unspecified","tiers_mode":null,"transform_quantity":null,"type":"one_time","unit_amount":3500,"unit_amount_decimal":"3500"}
],
"has_more": false,
"url": "/v1/prices"
}
我想写这样的东西:
Stripe::Price.list(product: @composition.product).sort_by([:nickname].reverse) 但它显然不起作用。
我可以遍历这 3 行,但我需要分别在他们的价格页面上 linked_to 他们。
<% @compositionsProduct.map do |compoPrice| %>
<%= link_to "#{compoPrice.nickname}", composition_path(compoPrice.id) %>
<% end %>
这是我最远的一点:@compositionsProduct.sort_by { |hash| hash[:nickname]} 负号不起作用,.reverse 也不起作用
sort_by 按字母顺序排列哈希数组中特定行的值的最佳方法是什么?
【问题讨论】:
-
列表请求总是按照对象创建的时间顺序响应,最近的在前。这不是随机的,只是不是你需要的。
-
嗯,我按时间顺序为产品创建价格 S,然后是 M,然后是 L。但有时我得到 S、M、L,有时是 L、M、S 等。我检查了 created_at和 Price_id 但它只是抛出随机数。我必须手动完成这个简单的需求
-
您按照 S、M、L 的顺序创建了它们,那么列表请求应始终返回 L、M、S。应首先列出最近创建的。
标签: ruby-on-rails api sorting