无法访问表属性的值
问题描述:
我试图从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_id
和manufacturer_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