【发布时间】:2014-05-15 08:53:26
【问题描述】:
我有一个模型叫Family,它是belongs_to :user
我想让用户在一个表单中添加多个家庭成员,在/views/families/new.html.erb
- 因此用户会看到一个表单,用于为一个 user_id 创建 3 个家庭成员
- 将数据输入 3 个相同的表单,然后点击提交
- 提交一次后,3 个单独表单的数据应在数据库中保存为 3 个不同的记录
- 现在,当我提交表单时,数据库中的所有值都保存为 NULL。
- 我做错了什么?我不应该使用强参数吗?
编辑:抱歉,我应该早点提供更详细的代码 稍作修改后的代码
# config/routes.rb
resources :families
#app/models/user.rb
class User < ActiveRecord::Base
has_many :families
end
#app/models/family.rb
class Family < ActiveRecord::Base
belongs_to :user
end
#app/controllers/families_controller.rb
class FamiliesController < ActiveRecord::Controller
def new
end
def create
@family = Family.new(family_params)
a = params[:family][:"0"]
@family.user_id = current_user.id
if @family.save
flash[:notice] = params[:family][:"0"]
redirect_to dummy_path
else
flash[:notice] = "didnt happen"
end
end
private
def family_params
params.require(:family).permit(:all)
end
end
#app/views/families/_form.html.erb
<%= form_tag(controller: "families") do %>
<% i = 0 %>
<% 3.times do %>
<br>
<h2>Family Member # <%= i+1 %> : </h2>
<br>
<%= fields_for("family[#{i}]") do |f| %>
<%= f.text_field :name, class: "form-control" , placeholder: "Name"%> <br>
<%= f.text_field :relationship, class: "form-control" , placeholder: "Relationship" %> <br>
<%= f.date_field :dob, class: "form-control" %> <br>
<%= f.text_field :blood_group, class: "form-control", placeholder: "Blood group" %> <br>
<%= f.text_field :email, class: "form-control", placeholder: "Email" %> <br>
<%= f.number_field :phone, class: "form-control", placeholder: "Phone number" %> <br>
<%= f.text_area :hobbies, class: "form-control", placeholder: "Hobbies" %> <br>
<% i=i+1 %>
<% end %>
<hr>
<% end %><br>
<%= submit_tag "Submit", class: "btn btn-primary" %> <br>
<% end %>
【问题讨论】:
-
你的用户表的属性是什么?
-
:email, :password_digest 加上 rails 创建的那些。但我在这里没有以任何方式使用用户模型,我只想用一个表单在“家庭”表中输入多条记录
标签: ruby-on-rails ruby-on-rails-4