映射和加入视图中的计算值(Rails)

Posted

技术标签:

【中文标题】映射和加入视图中的计算值(Rails)【英文标题】:Map and join in-view calculated value (Rails) 【发布时间】:2018-11-29 20:21:27 【问题描述】:

我有一张表,可以为一个产品分配多个相同产品的 rfid_tag 编号。在主表中,这是通过为每个表创建一个连接的标签列表来完成的,并在其他地方进行详细介绍。但是,我有一组计算的 ROI 值,我想以与 rfid_tags 类似的方式列出。

<td>
  <%= product.rfid_tag_numbers %>
</td>   

<%product.rfid_tags.each do |tag| %>   
  <td>
    <%= number_with_precision((product.heritable_rental_price.to_f * tag.product_selections.length) / product.purchase_price.to_f, precision: 2) %> 
 </td>                                
<%end%>

rfid_tag_numbersProduct 模型中定义为:

belongs_to :ancestor_product, :class_name => "Product"

def rfid_tag_numbers
    rfid_tags.map|rfid| "##rfid.short_number".join(", ")
end

仅仅映射计算和加入标签号是不够的。就目前而言,它一次渲染一个单元格,这并不理想 - 我错过了什么?

映射尝试 #1:

<%= rfid_tag.map|item| number_with_precision((item.heritable_rental_price.to_f * rfid_tag.product_selections.length) / item.purchase_price.to_f, precision: 2).join(", ") %> 

【问题讨论】:

请显示无效的代码。 我可以展示尝试;我试图通过简单地将它包装在 map/join 逻辑中来实现它。 应该是rfid_tags.map 而不是rfid_tag.map 只显示整个html文件并说明问题。很难理解你在问什么(这就是为什么有人已经对你投了反对票)。 @moveson 不,它是从管道中正确引用的 - 只是将其更改为 |tag| 以将焦点重新吸引到问题上。发布整个文件似乎过于庞大且无关紧要。我有一个rfid_tag_numbers 方法将.(', ') 标记号连接到一个列表中,我想让来自&lt;%= number_with_precision((product.heritable_rental_price.to_f * tag.product_selections.length) / product.purchase_price.to_f, precision: 2) %&gt; 计算的值的行为方式相同。 【参考方案1】:

在您定义 rfid_tag_numbers 的模型中,您可以添加一个复制类似类型地图的新方法:

def rfid_tag_numbers_with_precision
  rfid_tags.map  |rfid| number_with_precision((heritable_rental_price.to_f * rfid.product_selections.length) / purchase_price.to_f, precision: 2) .join(", ")
end

您应该能够在您的视图中以与其他方法相同的方式调用它:

<td>
  <%= product.rfid_tag_numbers_with_precision %>
</td>

【讨论】:

这行得通!当它不再识别 number_to_precision 时,我不得不进行调整,但 rfid_tags.map |rfid| '%.2f' % ((heritable_rental_price.to_f * rfid.product_selections.length) / purchase_price.to_f ).join(", ") 也能正常工作。谢谢!

以上是关于映射和加入视图中的计算值(Rails)的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 表单中的枚举选择映射值

使用模块聚合加上 Drupal 视图中的值求和后的计算

MySQL数据库中的高级(进阶)语句:VIEW视图联集和常见计算

Ruby on Rails 变量在视图中显示 Active Record 数据而不是整数

Rails 视图:加入 has_many 关系而不是遍历它们?

计算原始文件中的词频并映射它们