2017-06-30 21 views
0

View Output循環具有嵌入Ruby和simple_form

我通過使用simple_form值數組試圖循環。

凡@ resume.employerorg持有以下值:

[ 「凱撒聖克拉拉醫院」, 「凱撒醫院」, 「UC醫療中心」, 「UCD醫療中心」, 「一些醫院」 「薩特奧本信醫院」,「凱撒羅斯維爾醫院」, 「薩特羅斯維爾醫院」]

在我看來,我有以下

<h3>7. Employer Names</h3> 
    <%= simple_form_for @resume do |f| %> 
     <% @resume.employerorg.each do |i| %> 
     <%= f.input :employerorg, label: 'First Employer' %> 
     <%= f.button :submit %> 
<% end %> 
    <br/> 
<% end %> 

但這種建立8個輸入字段中填充有

凱澤聖克拉拉醫院凱澤醫院UC醫療中心UCD 醫療中心某醫院薩特赤褐色的信仰醫院凱澤 羅斯維爾醫院薩特羅斯維爾醫院

如何我會用數組中的一個單獨項填充每個輸入,而不是使用整個數組填充每個輸入8次?

+1

上面的代碼將產生8個獨立的輸入和提交按鈕。你想實現什麼?你基本上是說數組中的每個項目,產生一個輸入和一個提交按鈕。 –

+0

*「不應@ @ resume.employerorg.each在每個輸入字段中只顯示一個employerorg?」*。不,它不應該。 '@ resume'是表單的目標對象,這部分'<%= f.input:employerorg%>'將填充基本上是'target_object.public_send(:employerorg)'的輸入,這就是爲什麼它填充每個每個輸入中的單個數組值。 – engineersmnky

+0

謝謝。我將如何填充每個輸入與陣列中的一個單獨的項目,而不是使用整個陣列填充每個輸入8次? – cruisertom

回答

0
<h3>7. Employer Names</h3> 
    <%= simple_form_for @resume do |f| %> 
     <% @resume.employerorg.each do |i| %> 
     <%= f.input :employerorg, label: 'First Employer' %> 
     <%= f.button :submit %> 
<% end %> 
    <br/> 
<% end %> 

理解什麼是怎麼回事:每次你告訴的Ruby/Rails到.each do對象集合,你指定一個「指針」,如果你願意,指每個對象內,你的情況,你」已經指定i

如果您使用一個簡單的數組作爲您的輸入,您可以使用i輸出該值。

正如Fredrico所提到的,您還應該利用該對象的索引來生成您的ID。

<h3>7. Employer Names</h3> 
<%= simple_form_for @resume do |f| %> 
    <% @resume.employerorg.each do |i, index| %> 
    <%= f.input "emp-#{index}".to_sym, label: "Employer: #{index}", input_html: {value: i} %> 
    <% end %> 
    <br/> 
<% end %> 
0

您應該使用值i來生成輸入。事情是這樣的:

<h3>7. Employer Names</h3> 
    <%= simple_form_for @resume do |f| %> 
     <% @resume.employerorg.each_with_index do |i, index| %> 
     <% input_id = "employerorg_#{index}".to_sym %> 
     <%= f.input input_id, label: 'First Employer', input_html: {value: i} %> 
     <%= f.button :submit %> 
<% end %> 
    <br/> 
<% end %> 

您需要根據項目index生成input_id。否則,所有的輸入將具有相同的名稱和ID,並且將是不區分的。

+0

感謝費德里科,這幫助我更好地理解了這些概念。 – cruisertom