2016-11-14 8 views
0

私が持っている モデルカラーどのように配列上のidを選択するか?

has_many :colorships 
has_many :products, :through => :colorships 

モデル製品

製品コントローラ上の
has_many :colorships 
has_many :colors, through: :colorships 

iを好きな色に選択する選択することになる問題は、あなたがにhas_manyを使用していることである

def new 
    Product.New 
    @dropdown = @product.color_ids.collect { |co| [co.name, co.id] } 
end 


def show 
    Product.find(params[:id]) 
color = product.color_ids.select { |i| [i.id] } 

end 
+2

あなたの質問がありますか? –

+0

@EliSadoff配列のIDを選択する – jjplack

+0

"配列上のID"によって、 "each_with_index"を使用する配列内の要素のインデックスを意味する場合。 Active Recordによって返されたレコードのIDを見つけることを意味する場合、返されるオブジェクト(レコード)のメソッド "id"を呼び出すことができます。 – bkunzi01

答えて

0

ました常に配列を返します。あなたはいくつかのことを間違っている。

product.color_ids.nil?は決してゼロにならないので、product.colors.empty?は空の配列が空ではないため、product.colors.empty?が必要です。

この行current_user.find_by_color_id(product.color_ids.nil? ? nil : product.color_ids.color.id)は決して動作しません。 current_userは、current_userオブジェクトを取得するDeviseメソッドなので、findを追加するとエラーが発生します。

product.color_ids.color.idもどちらでも動作しません。ここで何をしようとしているのかわかりませんが、product.colorsproduct.color_idsはどちらも配列を返します。あなたが最初のidをしたい場合はproduct.colors.first.idまたはproduct.color_ids.firstとすることができます。

あなたは家から遠く離れているようです。申し訳ありません。私はもっ​​と喜んで支援しますが、私はより多くの情報が必要です。ユーザモデルと、あなたが何をしようとしているのかを理解する必要があります。current_user.find_by_color_id(product.color_ids.nil? ? nil : product.color_ids.color.id)

+0

ありがとうございます。あなたは正しいです。私はユーザーが製品の選択された色を取得する製品ショーにしようとしています。それは私がやろうとしていることです。 – jjplack

+0

そのため、配列のidを取得する唯一の方法は、最初のIDだけですか? – jjplack

+0

私は私の質問を編集しましたありがとう – jjplack

関連する問題