我使用嵌套表单将数据插入两个表(用户和地址)。我想让我的用户在表中都有电子邮件ID,但用户应输入一次电子邮件ID。这是我目前的观点
<%= form_for @user do |f| %>
<%= f.text_field(:name, :size => 20) %>
<%= f.text_field(:email, :size => 20) %>
<%= f.fields_for :address do |r| %>
<%= r.text_field(:street, :size => 20) %>
<%= r.text_field(:city, :size => 20) %>
<% end %>
<%= f.submit "Create" %>
<% end %>
在我的嵌套部分“地址”中,我再次想要电子邮件字段,但我不希望电子邮件的重复文本字段。如何使用嵌套表单“地址”中的电子邮件部分?我尝试过使用隐藏的表单字段,但它没有用。请有人帮忙吗。
修改
控制器(仅与问题相关的部分)
class UsersController < ApplicationController
def new
@domain = Domain.find(params[:id])
@user = @domain.users.build
@title = "Add User"
end
def create
@user = User.new(params[:user])
if @user.save
flash[:success] = "Welcome!"
redirect_to manageDomain2_path(:id => @user.domain_id)
else
@title = "Add User"
redirect_to addNewUser_path(:id => @user.domain_id)
end
end
我尝试过:
@user = User.new(params[:user][:address_attributes].merge!(:email => params[:user][:email]))
使用时:
@user = User.new(params[:user][:address].merge!(:email => params[:user][:email]))
我收到错误“Undefined method merge”。
用户模型(仅与问题相关的部分)
class User < ActiveRecord::Base
attr_accessible: :email, :domain_id, :address_attributes
belongs_to :domain
has_one :address
accepts_nested_attributes_for :address
end
地址模型(完整)
class Address < ActiveRecord::Base
attr_accessible :user_id, :email, :street, :city
end
当我使用
时belongs_to :user
在地址模型中我得到语法错误。所以我试过没有使用它。 user_id,street,city正在获得正确的值,但是电子邮件电子邮件字段没有得到任何东西。
答案 0 :(得分:0)
您只需将其添加到控制器的params哈希:
params[:user][:address].merge!(:email => params[:user][:email])