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>        

其中 name 是一个数组。我想要的是分别捕获姓名和姓氏并将它们加入名称 [] 中。我找不到轻松做到这一点的方法。你有什么建议吗?

提前致谢。

4

2 回答 2

1

你不需要这样的黑客来解决问题。通过 virtual 设置属性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
于 2013-08-07T15:46:37.903 回答
0

我会检查直到我生成了这个html:

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

我会尝试:

<%= text_field_tag 'doctor[name][]' %>
于 2013-08-07T15:13:59.643 回答