2013-08-07 3 views
0

Я читал этот вопрос (Ruby on Rails: Submitting an array in a form), но он не ответил на мой вопрос.Отправка массива в форме

я иметь такую ​​форму:

<div class="signup pull-right">       
    <div>             
    <p style="color: white">Create Doctor:</p>   
    <%= form_for(@doctor) do |d| %>      
    <%= d.text_field :name[1], :placeholder => "name" %>              
    <%= d.text_field :name[2], :placeholder => "surname" %>             
    <%= d.text_field :email, :placeholder => "email" %> 
    <%= d.text_field :password, :placeholder => "password" %>             
    <%= d.text_field :password_confirmation, :placeholder => "password confirmation" %>      

    <%= d.submit "Sumbit", class: "btn btn-small btn-primary pull-right", id: "boton" %>      
    <% end %>            
</div>   

где имя является массивом. Я хочу, чтобы поймать имя и фамилию отдельно и присоединиться к ним внутри имени []. Я не мог найти способ сделать это легко. Есть ли у вас предложения?

Заранее спасибо.

ответ

0

Я хотел бы проверить, пока у меня есть этот HTML генерируемый:

<input name='doctor[name][]'> 

Я хотел бы попробовать:

<%= text_field_tag 'doctor[name][]' %> 
+0

Спасибо Хуан, но это не решает его .. Что вы имеете в виду именно с «именами, которые я упоминаю»? : имя или адрес электронной почты? –

+0

jeje был странным. Забудьте эту часть. Как генерируется HTML с каждой опубликованной вами опцией? – juanpastas

+0

Хуан, я солгал вам, извините. Это именно то, что мне нужно. Он решил мою проблему (спустя 8 часов ....). Я новичок. Большое спасибо! –

1

Вам не нужен такой хак, чтобы решить эту проблему. Установка атрибутов по виртуальному cattr_accessor была бы простой и условной.

class Doctor < ActiveRecord::Base 
    cattr_accessor :first_name, :surname 
    # others... 
end 

Затем в форме

<%= form_for(@doctor) do |d| %>      
<%= d.text_field :first_name, :placeholder => "first name" %> 
<%= d.text_field :surname, :placeholder => "surname" %> 

Затем контроллер

def create 
    attr = params[:doctor] 
    attr[:name] = "#{attr.delete!(:first_name)} #{attr.delete!(:surname)}" 
    @doctor = Doctor.new(attr) 
    if @doctor.save 
    # blah blah 
end 
+0

почему cattr_accesor и не attr_accessor? могли бы вы объяснить? – juanpastas

+0

@juanpastas, в этом случае они должны быть такими же, как нам нужны только атрибуты для работы на уровне экземпляра. Оба могут это сделать. Я просто привык к 'cattr_accessor', который является методом Rails, но не Ruby. –

+0

Хмм не знал этого. Благодарю. – juanpastas

Смежные вопросы