Как вы передаете рельсы 3 формы params в массив? - PullRequest
2 голосов
/ 03 января 2011

У меня есть вложенная форма (с помощью 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, он не работает должным образом. Если вы посмотрите на исходный код, идентификатор и имя одинаковы для всех шести?

Как мне поместить эти параметры в массив? [чтобы я мог их изолировать так:]

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

(я пробовал метод, описанный в эпизоде ​​192 рейлкастов, но он тоже не работал).

1 Ответ

0 голосов
/ 03 января 2011

После нескольких часов проб и ошибок я взломал что-то, что работает (но, пожалуйста, дайте мне знать, если вы знаете лучший, более красноречивый способ):

в поле зрения:

<%= 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  

убедитесь, что вы превратили меня в строку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...