我正在尝试从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_id
和manufacturer_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] =>
,但我仍然遇到错误。
答案 0 :(得分:0)
当您使用where
从ActiveRecord中选择时,它会返回一个ActiveRecord_Relation
对象,始终一个关联对象的数组,因为可以从一个对象返回多个对象where
查询。
您需要指定在视图中选择的Tint
:
@measurements.first.rear
或者您需要修改控制器以仅选择返回的第一个对象:
@measurements = Tint.where('manufacturer_id' => @manufacturers).where('model_id' => @models).first