2016-04-01 11 views
0

benim raylar seçme içine katılmak tabloları koleksiyonunda geçiyorum ve şuna benzer: iyi çalışıyor, ancak görünümünde bir channel_id gösteriyorraylar select_tag

= select_tag :editing_channel, options_from_collection_for_select(@channel_users, :id, :channel_id) 

. Kanal ismini göstermek istiyorum. Hangi sadece channel.name, bunu nasıl yapabilirim?

Ben channel.nae

Modelleri görüntülemek istiyorum:

class User < ActiveRecord::Base 
    has_many :channel_users 
    has_many :channels, through: :channel_users 
end 

class Channel < ActiveRecord::Base 
    has_many :channel_users 
    has_many :users, through: :channel_users 
end 
+0

Modeliniz ve nitelikleriniz nedir? – Pavan

+0

Modelimi göstermek için gönderimimi düzenledim – Jay

+0

Kanal modelindeki özellikler nelerdir? – Pavan

cevap

0

bu deneyin: API Yuvadan

select_tag :editing_channel, options_for_select(@channel_users.map { |cu| [cu.channel.name, cu.id] }) 
+0

Benzer bir şey denedim. Bu hatayı alın: 'tanımsız yerel değişken veya yöntem channel' – Jay

+0

Eğer @ channel_users.channel.name'' @hoanewton @ channel_users.channel.name – hoanewton

+0

tarafından channel.name yerini alabilir, bence, hata döndürür. – 7urkm3n

0

: sizin durumunuzda

options_from_collection_for_select(@people, 'id', 'name') 
# => <option value="#{person.id}">#{person.name}</option> 

o şöyle olmalı:

= select_tag :editing_channel, options_from_collection_for_select(@channel_users, :id, :name) 
+0

yukarıda düzenlenmiş kodu gibi 'cu.id' tarafından cu.channel.id değiştirirseniz kimliği – Jay

0

tarafımdan test edilmiş, ancak bu deneyin değil.

collection_select(:channel_ids, Channel.all, :id, :name) 

sizin User modelinde channel_ids kitle atanabilir, böylece size user_params yöntemine channel_ids: [] ekledik sağlamak, şu şekildedir:

, senin görünümünde, collection_select yardımcı kullanın Kullanıcı modeli.