无法访问表格属性

时间:2016-07-23 01:39:15

标签: ruby-on-rails ruby

我正在尝试从front, rear, side实体获取tints属性的值。

制造商{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 %>时,会显示下面一行,表示@measurements中的tints_controller已正确定义。它表明,通过搜索正确的model_idmanufacturer_id,它可以从表中获取整行。但是,通过front, side, rear

,我无法直接获得int中的<%= @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">]>

我做了什么: 我尝试<%= @measurements[:front] =><%= @measurements[:id][:front] =>,但我仍然遇到错误。

1 个答案:

答案 0 :(得分:0)

当您使用where从ActiveRecord中选择时,它会返回一个ActiveRecord_Relation对象,始终一个关联对象的数组,因为可以从一个对象返回多个对象where查询。

您需要指定在视图中选择的Tint

@measurements.first.rear

或者您需要修改控制器以仅选择返回的第一个对象:

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