2014-01-09 41 views
0

我對rails很新,我正在構建我的第一個應用程序。我在網上搜索了一個正確的答案,但找不到任何適用於我的案例。如何使用Rails 4中的數據庫條目填充下拉列表

我使用簡單的表單,使用rails 4和bootstrap 3.我在(@employees)模型上有一個:location下拉列表,我想用我的@positions模型中的job_title列填充它。我用腳手架來生成我的位置MVC + job_title:string job_description:string。

如何使用:job_title(來自@positions模型)的值填充我的:location下拉列表(在我的員工表單上)?我目前有我的代碼:

<div class="col-md-6 pad-10"> 
<% options = options_from_collection_for_select(@positions, 'id', 'job_title') %> 
<%= f.select :location, options, :input_html => { class: "form-control" } %> 
</div> 

但如你所知,這是行不通的。任何幫助表示讚賞!

Solution:

<div class="col-md-6 pad-10"> 
<% options = options_from_collection_for_select(Position.all, 'id', 'job_title') %> 
<%= f.select :location, options, :input_html => { class: "form-control" } %> 
</div> 

我用Position.all代替@positions

+0

什麼錯誤反應? – skozz

+0

我得到這個錯誤:未定義的方法'map'爲零:NilClass –

+0

我認爲'options_from_collection_for_select'需要一個數組。因此,請嘗試使用'Modelname.all'而不是'@ positions'或使用'@positions = Modelname.all'重新聲明'@ positions' – skozz

回答

1

options_from_collection_for_select需要一個數組。 Docs

所以請嘗試使用Modelname.all代替@positions或重新申報@positions@positions = Modelname.all

0

這應該爲你做,如果你想的Position對象被寫入location字段。如果你想job_title cahnge :id:job_title

<div class="col-md-6 pad-10"> 
<%= f.label :location %><br /> 
<%= f.collection_select :location, @positions, :id, :job_title %> 
</div> 
+0

你的意思是位於第3行的@positions選項的權利? – beck03076

+0

請參閱編輯,....... – davidb

+0

這沒有奏效。我得到一個未定義的方法'映射'爲零:NilClass –

1

因爲你正在使用simple_form,您可以呈現一個選擇框像這樣的集合:

<%= f.input :location, collection: @positions, label_method: :job_title, value_method: :id, input_html: { class: "form-control" } %> 
+0

它呈現一個輸入框。如果我更改爲f.select,它會呈現下拉菜單,但選擇是label_method,value_method和colection。有任何想法嗎? –

+0

不確定它爲什麼呈現輸入。這在simple_form文檔https://github.com/plataformatec/simple_form上記錄,請向下滾動到集合部分。此外,您可以嘗試將::select傳遞給f.input助手。 – vidaica

+0

我也讀過。太奇怪了。看不到這個問題的解決方案。 –

0

我用Position.all代替@positions

<div class="col-md-6 pad-10"> 
<% options = options_from_collection_for_select(Position.all, 'id', 'job_title') %> 
<%= f.select :location, options, :input_html => { class: "form-control" } %> 
</div> 
相關問題