首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ransack:显示按Ransack排序的has_many关系的属性

Ransack:显示按Ransack排序的has_many关系的属性
EN

Stack Overflow用户
提问于 2018-06-07 16:48:05
回答 2查看 1.2K关注 0票数 4

我有一个Commodity(name:string)模型和一个Price(amount:float)模型,这样:

代码语言:javascript
复制
class Commodity < ApplicationRecord
  has_many :prices
end

代码语言:javascript
复制
class Price < ApplicationRecord
  belongs_to :commodity
end

因此,一种商品可以有多个价格。

我有一个商品搜索表,显然可以让用户搜索商品。我希望包括一个sort_link(@q, :prices_amount)排序过滤器。点击此链接将显示根据其价格排序的所有商品(如果一个商品有多个价格,则该商品将多次显示,每个重复的商品的价格都会相应地显示)。目前,Ransack确实多次显示一种商品(与每种商品的价格一样多),但我不知道如何显示每种重复商品的价格。

我想知道我应该如何在我的前端中显示这个价格。我通过以下方式显示查询结果:

代码语言:javascript
复制
<%=@commodities.each do |commodity|%>
  <%=commodity.name%>    
  <%=commodity.prices.first.amount%> <!-- In place of prices.first, I was to display the amount that Ransack found -->
<%end%>

我现在正在使用prices.first.amount作为占位符。如何将其替换为Ransack在排序时找到的amount

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-12 23:54:30

我建议创建一个作用域,将价格包含在Commodity实例中。例如:

代码语言:javascript
复制
class Commodity < ApplicationRecord
  scope :with_price, -> {joins(:prices).select("commodities.*, prices.amount as price_amount")}
end

这将在Commodity实例上创建虚拟属性price_amount

在控制器中,它将类似于

代码语言:javascript
复制
@q = Commodity.ransack(params[:q])
@commodities = @q.result.with_price

假设您正在以表的形式“显示”这些结果,您可以使用以下命令按请求显示结果

代码语言:javascript
复制
<table>
  <thead>
    <tr>
      <th><%= sort_link(@q, :name, 'Commodity' %></th>
      <th><%= sort_link(@q, :prices_amount, 'Price') %></th>
    </tr> 
  </thead>
  <tbody>
    <% @commodities.each do |commodity| %>
      <tr> 
        <td><%= commodity.name %></td>
        <td><%= number_to_currency(commodity.price_amount) %></td>
      </tr>
    <% end %>
  </tbody>
</table>
票数 3
EN

Stack Overflow用户

发布于 2018-06-09 03:35:26

为了清楚起见,这里有一些遗漏的信息,但是的,它很简单。您甚至有了答案,如果您有像您发布的示例中那样的关联,那么它必须与您发送的代码一起工作

代码语言:javascript
复制
sort_link(@q, :prices_amount)

其中“价格”是关联的名称,“数量”是您的属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50736846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档