Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4合并模型的输出_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails 4合并模型的输出

Ruby on rails Rails 4合并模型的输出,ruby-on-rails,Ruby On Rails,我是初学者,所以这个问题可能很简单。谢谢你的帮助。我有三个模型-一个金属对数据库进行查询以获得价格,另一个QuoteMetal嵌套在其中,它有“许多”并接受“嵌套的”属性“用于潜在客户”。我需要通过金属模型执行的查询结果在潜在客户集合中可用,以便在视图中显示结果 我的问题是:如何获得这些查询结果,特别是Lead实例变量中的price属性。如果不是lead实例变量,那么什么是显示结果的最佳方式。下面是我的代码 class LeadsController < ApplicationContro

我是初学者,所以这个问题可能很简单。谢谢你的帮助。我有三个模型-一个金属对数据库进行查询以获得价格,另一个QuoteMetal嵌套在其中,它有“许多”并接受“嵌套的”属性“用于潜在客户”。我需要通过金属模型执行的查询结果在潜在客户集合中可用,以便在视图中显示结果

我的问题是:如何获得这些查询结果,特别是Lead实例变量中的price属性。如果不是lead实例变量,那么什么是显示结果的最佳方式。下面是我的代码

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>]]