2013-12-23 91 views
1

我是Rails新手,我想知道如何爲多個fields_for設置不同的標籤或佔位符,我的表單工作正常,但我想更改它的顯示方式。
下面是我的表格:Rails:如何爲多個字段設置不同的標籤_

<%= f.fields_for :lodgedetails do |c| %> 
    <%= c.text_field :contact, :placeholder => 'Contact1', :class => 'form-control lodge_form' %> 
    <%= c.text_field :email, :placeholder => 'Email1', :class => 'form-control lodge_form' %> 
<% end %> 

,並在控制器中,我有:

2.times {@lodge.lodgedetails.build } 

現在顯示形式爲:

  • contact1
  • EMAIL1
  • contact1
  • EMAIL1

我希望它是:

  • contact1
  • contact2
  • EMAIL1
  • EMAIL2

如何實現以上?

回答

0

你可以嘗試each.with_index實現這一目標:

<% @lodge.lodgedetails.each.with_index do |lodge_detail, index| %> 
    <%= f.fields_for :lodgedetails, lodge_detail do |c| %> 
    <%= c.text_field :contact, :placeholder => "Contact#{index}", :class => 'form-control lodge_form' %> 
    <%= c.text_field :email, :placeholder => "Email#{index}", :class => 'form-control lodge_form' %> 
    <% end %> 
<% end %> 

上述會給你包含lodgedetails目前指數在循環佔位符元素。

+0

謝謝我試了一下,我如何改變順序?現在它顯示爲contact1,email1,contact1,email1,我希望它像contact1,contact2,email1,email2。 – Arun

+0

我得到了解決方案,我已經重複了兩次循環。 – Arun

0

,您可以嘗試:

<% @lodge.lodgedetails.each.with_index do |lodge_detail, ind| %> 
    <%= f.fields_for :lodgedetails, lodge_detail do |c| %> 
    <%= c.text_field :contact, :placeholder => "Contact#{ind}", :class => 'form-control lodge_form' %> 
    <%= c.text_field :email, :placeholder => "Email#{ind}", :class => 'form-control lodge_form' %> 
    <% end %> 
<% end %> 

但是當你嘗試它的指數值將從零開始,所以你必須通過一個遞增或者你可以乘坐當地的實例,並給啓動值它。

+0

我如何更改訂單,使其顯示爲contact1,contact2,email1,email2? – Arun

+0

那時它顯示給你什麼? –

+0

不,這是我的原始問題 – Arun

相關問題