无法访问表属性的值

问题描述:

我试图从tints实体获取front, rear, side属性的值。无法访问表属性的值

厂家{id, name}
模式{id, manufacturer_id, name}
色调{id, manufacturer_id, model_id, front, side, rear}

这是我tints_controller.rb

def generate 
    @manufacturers = Manufacturer.find(params[:tint][:manufacturer_id]) 
    @models = Model.find(params[:tint][:model_id]) 
    @price_front = Price.find(params[:price][:price_front]) 
    @price_rear = Price.find(params[:price][:price_rear]) 
    @measurements = Tint.where('manufacturer_id' => @manufacturers).where('model_id' => @models) 
    end 

我收到的时候我试图做<%= @measurements.rear %>generate.html.erb

undefined method `rear' for #<Tint::ActiveRecord_Relation:0x0000000c628610> 
错误

下面是调试屏幕

Request 

Parameters: 

    {"utf8"=>"✓", 
    "authenticity_token"=>"jfV6SUkNdKWO1f1fyzqS4eLbvszjDPNm2E81M90lnvPArYScSjcjQlxsJdcuqQMJ+mSecCsyVQlhz2cpAH1DUw==", 
    "tint"=>{"manufacturer_id"=>"6", "model_id"=>"3"}, 
    "price"=>{"price_front"=>"1", "price_rear"=>"2"}, 
    "commit"=>"Submit"} 

然而,当我做<%= @measurements.inspect %>,它显示出低于行,指示在tints_controller@measurements正确定义。它显示它可以通过搜索正确的model_idmanufacturer_id从表中获得整行。不过,我不能直接做<%= @measurements.front =>

#<ActiveRecord::Relation [#<Tint id: 1, manufacturer_id: 6, model_id: 3, front: 40, side: 50, rear: 60, created_at: "2016-07-22 04:14:49", updated_at: "2016-07-22 04:14:49">]> 

我做了什么,以获得front, side, rear值作为int: 我试图做<%= @measurements[:front] =><%= @measurements[:id][:front] =>,我仍然得到错误。

当使用where自ActiveRecord选择,则返回ActiveRecord_Relation对象,该对象是总是相关对象的数组,因为多个对象可以从where查询返回。

您需要可以指定Tint在视图中选择:

@measurements.first.rear 

,或者您需要修改控制器只能选择被返回的第一个对象:

@measurements = Tint.where('manufacturer_id' => @manufacturers).where('model_id' => @models).first