2015-12-02 25 views
0

在我的「銷售」 - 視圖我想手動分配用戶ID到「出售」。 通常情況下,用戶ID和姓名被通過Rails:將用戶ID保存到數據庫,但只顯示視圖中的用戶名

@sale.user_id = current_user.id 
@sale.name = current_user.name 

保存在控制器中,但我想通過這樣的手動覆蓋這些值:

<%= f.select :user_id, User.all.map { |c| "#{[c.name]} #{[c.id]}" }, :prompt => "Choose..", class: "form-control" %> 

但是這一個是試圖拯救整個陣列到sale.user_id列。你將如何解決這個問題?

簡而言之:下拉菜單應該只顯示用戶名,但將用戶ID保存到數據庫中。

非常感謝提前!

+0

你現在在做什麼? – hdost

回答

1

這應該工作:

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

希望它能幫助!

+0

我犯了一個錯誤:代碼看起來不錯。但是,你能擴展它,以便它也保存新的「名稱」?這會給我一個單獨的下拉菜單,將兩條記錄保存到數據庫中。這可能嗎? – CottonEyeJoe

+0

如果是這樣的話,爲什麼不在後端取名並保存。從下拉菜單保存兩件事可能會很麻煩。但是,您可以通過操作數據來完成。像'name(id)'那麼在後端,將它們分成'name'和'id'並保存。 – Dusht

+0

這就是問題所在:將current_user.id和current_user.name保存到「Sales」表中的數據庫中。但我希望能夠手動覆蓋這兩個值。你的代碼片段很棒,但它只保存了id而不是數據庫的名稱。你知道我是如何通過「銷售」表中的用戶ID從「用戶」表中獲得真正的用戶名嗎?這將解決我認爲的問題.. – CottonEyeJoe

0
<%= f.select :user_id, User.all.map { |c| [c.name, c.id] }, :prompt => "Choose..", class: "form-control" %> 
相關問題