Ruby on rails Rails 4合并模型的输出
我是初学者,所以这个问题可能很简单。谢谢你的帮助。我有三个模型-一个金属对数据库进行查询以获得价格,另一个QuoteMetal嵌套在其中,它有“许多”并接受“嵌套的”属性“用于潜在客户”。我需要通过金属模型执行的查询结果在潜在客户集合中可用,以便在视图中显示结果 我的问题是:如何获得这些查询结果,特别是Lead实例变量中的price属性。如果不是lead实例变量,那么什么是显示结果的最佳方式。下面是我的代码Ruby on rails Rails 4合并模型的输出,ruby-on-rails,Ruby On Rails,我是初学者,所以这个问题可能很简单。谢谢你的帮助。我有三个模型-一个金属对数据库进行查询以获得价格,另一个QuoteMetal嵌套在其中,它有“许多”并接受“嵌套的”属性“用于潜在客户”。我需要通过金属模型执行的查询结果在潜在客户集合中可用,以便在视图中显示结果 我的问题是:如何获得这些查询结果,特别是Lead实例变量中的price属性。如果不是lead实例变量,那么什么是显示结果的最佳方式。下面是我的代码 class LeadsController < ApplicationContro
class LeadsController < ApplicationController
def index
@lead = Lead.new
@quote_metal = @lead.quote_metals.build
@quote_melee = @lead.quote_melees.build
@quote_diamond = @lead.quote_diamonds.build
end
def create
#raise params.inspect
@lead = Lead.new(lead_params)
@qm = @lead.quote_metals.map { |f| Metal.calculate_metal(f).first}
#@lead.quote_metals.each do |f|
# f[:price] = @qm[:price].to_i
#end
@lead = Lead.create!(lead_params)
end
def show
end
private
def lead_params
params.require(:lead).permit([:name, :email, :phone, :zip, :note, :method,
quote_metals_attributes: [:id, :metal, :weight, :unit, :price],
quote_melees_attributes: [:shape, :quality, :quantity, :totalweight, :size],
quote_diamonds_attributes: [:shape, :size, :color, :clarity]
])
end
end
<pre>
<%= @qm.inspect %>
<br>
<%= @lead.quote_metals.inspect %>
<br>
<%= @qm.inspect %>
<br>
<%= @qm2.inspect %>
</pre>
金属模型:
class Metal < ActiveRecord::Base
enum metal: {platinum: 1, palladium: 2, "10_karat_gold": 3, "14_karat_gold": 4,
"18_karat_gold": 5, "22_karat_gold": 6, silver: 7}
enum unit: {pennyweight: 1, grams: 2, ounce: 3, pound: 4}
attr_accessor :weight
#Validations
validates :metal, :unit, :weight, presence: true
scope :calculate_metal, ->(quote_metal) {
where(metal: QuoteMetal.metals[quote_metal.metal],
unit: QuoteMetal.units[quote_metal.unit])
}
scope :multiple, ->(quote_metal){
}
end
Create.html.erb
输出:
谢谢。您能解释一下您想用calculate_金属示波器做什么吗?另外,你们在哪里计算价格?您的潜在客户模型是否有要填充的价格属性?calculate\u metal是一个SQL查询。该查询的结果具有price属性。我想将该价格复制到Lead模型,该模型通过quote_metal模型具有价格属性。此外,由于它是一个多关系,Lead模型有多个报价金属和多个价格。是的,我可以看到calculate金属是一个范围查询,但我看不到它实现了什么。然而,如果你有一个铅@lead和许多quote_金属,每个都有价格,你可以在你的视图中遍历@lead.quote_金属,每个元素都有价格。您是否正在寻找视图代码,以便在给定@lead的情况下执行此操作?或者您正在尝试正确填充@lead?表单填充lead实例变量,并且有一个价格字段为nill。calculate_metal查询找到该价格,但将其放入另一个对象中。我试图将查询中找到的价格添加到Lead对象中。有什么想法吗?谢谢你的帮助。那么你有一个潜在客户。价格?在控制器中,您可以使用价格更新Lead实例,例如@Lead.price=computed_price。但是,如果存在多个价格,则不清楚应该在Lead实例中填充哪个价格。也许我们可以很快地聊一聊。
[#<Metal id: 11, metal: 2, unit: 2, price: #<BigDecimal:7ff01dac4be8,'0.1367E2',18(18)>, created_at: "2015-05-26 10:36:38", updated_at: nil, weight: nil>, #<Metal id: 11, metal: 2, unit: 2, price: #<BigDecimal:7ff01da96450,'0.1367E2',18(18)>, created_at: "2015-05-26 10:36:38", updated_at: nil, weight: nil>]
#<ActiveRecord::Associations::CollectionProxy [#<QuoteMetal id: 231, lead_id: 176, metal: 2, unit: 2, price: nil, weight: #<BigDecimal:7ff01cc71320,'0.1E1',9(18)>, quote: nil, created_at: "2015-07-14 18:26:46", updated_at: "2015-07-14 18:26:46">, #<QuoteMetal id: 232, lead_id: 176, metal: 2, unit: 2, price: nil, weight: #<BigDecimal:7ff01ca49d90,'0.2E1',9(18)>, quote: nil, created_at: "2015-07-14 18:26:46", updated_at: "2015-07-14 18:26:46">]>
[#<Metal id: 11, metal: 2, unit: 2, price: #<BigDecimal:7ff01dac4be8,'0.1367E2',18(18)>, created_at: "2015-05-26 10:36:38", updated_at: nil, weight: nil>, #<Metal id: 11, metal: 2, unit: 2, price: #<BigDecimal:7ff01da96450,'0.1367E2',18(18)>, created_at: "2015-05-26 10:36:38", updated_at: nil, weight: nil>]
[[#<Lead id: nil, name:..., note: "asdf", created_at: nil, updated_at: nil>, #<Metal id: 11, metal: 2, unit: 2, price: #<BigDecimal:7ff01dac4be8,'0.1367E2',18(18)>, created_at: "2015-05-26 10:36:38", updated_at: nil, weight: nil>]]