2016-03-30 17 views
-1

İki değeri DB'ye (kullanıcı kimliği ve kullanıcı adı) sadece bir form seçim alanı ile kaydetmek istiyorum. Bu mümkün mü? Bu defa ne var: DB: Sadece (id itibaren) user_id kaydederForm-Select 1'den fazla değer kaydetme

<%= f.collection_select(:user_id, User.where(brand: current_user.brand), :id, :name, {prompt:true}, {class: 'form-control'}) %>

O. Bunu ayrıca user_name (from: name) 'den DB'ye kaydetmek için bunu nasıl genişletecektiniz?

<%= f.collection_select(:user_id, :user_name, User.where(brand: current_user.brand), :id, :name, {prompt:true}, {class: 'form-control'}) %>

çalışmaz.

Şimdiden çok teşekkürler!

cevap

1

Diğer tüm özniteliklere başvurmak için yalnızca user_id dosyasını kaydetmeniz gerekiyor.

options_for_select'u kullanmayı ve bir kimlik kaydederken iki boyutlu bir dizi iletmeyi seviyorum. İlk değer, kullanıcının gördüğü şey olacaktır. İkinci değer aslında kaydettiğim şey olacaktır. Bu durumda, kullanıcının username numaralı telefonu görmesini istediğinizi tahmin ediyorum ancak user_id'u gerçekten kaydetmek istiyorsunuz. Sen, her zamanki kullanıcı kayıtlı herhangi niteliğini erişebilir çünkü hem değerleri kaydetmek gerekmez

def self.choices 
    choices = [] 
    User.find_each { |u| choices << [u.username, u.id] } 
    choices 
end 

: user.rb sonra

<%= f.select :user_id, options_for_select(User.choices) %> 

ve: benzer görünümde olacaktır

kimliğine sahip.

DÜZENLEME:

Yorumlarınız başına, aslında hiç bir seçme kutusu gerekmez. Sadece emir denetleyicisi create action bunları:

@order.username = current_user.username 
@order.user_id = current_user.id 

if @order.save 
    # etc 

Yine olsa, gerçekten yabancı bir anahtar olarak user_id varsa kullanıcı adı kaydetmek gerekmez. Yabancı bir anahtarla, her zaman bir sipariş örneği alabiliyor ve order.user.username deyin ve o kullanıcı_kimliği için uygun kullanıcı adını alabileceksiniz.

+0

Bu harika görünüyor. Denediğim gibi yapmaya çalıştığım nedeni, eylem oluşturmak için '@order.user_id = current_user.id' ve '@order.user_name = current_user.name' kaydediyorum. – CottonEyeJoe

+0

Bunu yapmak isterseniz ... aslında hiç bir kutuya ihtiyacınız yok. Açıklamak için bir düzenleme yapacağım. – toddmetheny

+1

Harika teşekkürler! O çalışıyor – CottonEyeJoe

İlgili konular