2016-07-23 12 views
0

の値を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 

私は私generate.html.erb

undefined method `rear' for #<Tint::ActiveRecord_Relation:0x0000000c628610> 
<%= @measurements.rear %>をやろうとしたエラーを受信しました

は、ここで私は<%= @measurements.inspect %>を行うときに、それが正しく定義されているtints_controller@measurementsを示し、下の行を示した。しかし、デバッグ画面

Request 

Parameters: 

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

です。正しいmodel_idmanufacturer_idを検索することによって、表から行全体を取得できることがわかります。 私は<%= @measurements[:front] =><%= @measurements[:id][:front] =>を行うことを試みたが、私はまだエラーを取得:しかし、私は、私がやっていること<%= @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">]> 

を行うことによって、直接intのようfront, side, rear値を取得することができません。

答えて

0

あなたがwhereを使用してのActiveRecordから選択し、それが複数のオブジェクトがwhereクエリから返される可能性があるため、常に関連するオブジェクトの配列ですActiveRecord_Relationオブジェクトを返します。あなたがビューで選択するためにどのTint指定するいずれかの必要がある

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

@measurements.first.rear 

するか、あなただけにあなたのコントローラを変更する必要が返された最初のオブジェクトを選択します

関連する問題