2017-03-09 11 views
0

私はブランドテーブルをデータベースに持っています。私がしたいのは、IDでいくつかの行を選択し、ビューに表示することです。IDで選択して表示する方法は?

これは私が持っているものですが、Brand.find_by(id:[1,2,3])は動作しません。

ご協力いただきありがとうございます。コントローラでのブランドで

class Brand < ActiveRecord::Base 

def selection 
    Brand.find_by(id: [1,2,3]) 
end 

/index.html.erbビュー

<% @brand.selection.each do |brand| %> 
<%= link_to brand.name, brand %> 
<% end %> 

class BrandsController < ApplicationController 
def index 
    @brands = Brand.all 
end 

def show 
    @brand = Brand.find(params[:id]) 
    @review = Review.find(params[:id]) 
end 

def new 
    @brand = Brand.new 
end 

def create 
    @brand = Brand.new(review_params) 
end 

end 

答えて

0

は、使用してみてくださいでした:brand.rbモデルで

.findメソッドを呼び出し、配列を渡します。

array_of_ids = [1,2,3] 
Brand.find(array_of_ids) 

次に、私があなたが戻ってきたものを見ることができるように、@ brand.selectionの結果をダンプできますか?

また、私はあなたがこれをやっている理由を知らないかもしれませんが、あなたの選択メソッドが配列を引数として受け入れ、findメソッドに渡すのはむしろ意味がありませんそれをハードコーディングするよりも。

def selection(array_of_ids) 
    Brand.find(array_of_ids) 
end 

また、ビューのうち、できるだけ多くのロジックを維持しようとしているという点で、おそらくあなたは.selectionを呼び出して、あなたのビューにそれを渡すコントローラ内の変数を設定する必要があります。

さらに
def index 
    @brands = Brand.all 
    @selected_brands = Brand.selection 
end 

、Brand.selectionあなたは(あなたが、大きい場合)、変数を宣言するときにどこか他の再使用、あなただけのコントローラに直接それを固執かもしれないしようとしている何かでない限り:

def index 
    @brands = Brand.all 
    array_of_ids = [1,2,3] 
    @selected_brands = Brand.find(array_of_ids) 
end 
あなたの意見で

そしてちょうど使用:

@selected_brands.each do |brand| 
    //something 
end 
+0

パーフェクト、これは私のために働きました。私はコントローラーに貼りつけることを考えましたが、必要なコードを釘付けにすることはできませんでした。ご協力いただきありがとうございます。 – Joshua

+0

問題はありません。うれしいことに、ソートされています。 – Brad

関連する問題