你如何将rails 3 form params传递给一个数组?

时间:2011-01-02 21:13:50

标签: ruby-on-rails-3 nested-forms

我有一个嵌套表单(在各自的模型中使用accepts_nested_attributes_for):

<%= form_for(:technician, :url => {:controller => 'pos', :action => 'create_ticket'}) do |f| %>  
   <%= f.fields_for :service do |s| %>  
       <%= s.text_field :name %>  
       <%= s.text_field :name %> 
       <%= s.text_field :name %>  
       <%= s.text_field :name %>  
   <% end %>  
<% end %>   

如果我只有一个s.text_field,这样可以正常工作。但是一旦我添加了额外的text_fields,它就无法正常运行。如果查看源代码,那么所有六个的id和名称都是相同的?

如何将这些参数放入数组中? [所以我可以像这样隔离它们:]

service1 = Service.named(params[:technician][:service][1][:name])  

(我已经尝试过在railscasts第192集中描述的方法,但它也没有用)。

1 个答案:

答案 0 :(得分:0)

经过数小时的反复试验,我已经攻击了一些有效的东西(但如果你知道一种更好,更有说服力的方式,请告诉我):

在视图中:

<%= form_for(:technician, :url => {:controller => 'pos', :action => 'create_ticket'}) do |f| %>  
  <% for @i in 1..6 do %>  
    <%= f.fields_for "services[#{@i}]" do |s| %>  
    <% end %>  
  <% end %>  
<% end %>  
控制器中的

 for i in 1..6 do  
        @service = Service.named(params[:technician][:services][i.to_s][:name]).first  
 end  

确保你把我变成字符串