Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 如何使用嵌套表单将相同的数据插入到两个表中_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 如何使用嵌套表单将相同的数据插入到两个表中

Ruby on rails 3 如何使用嵌套表单将相同的数据插入到两个表中,ruby-on-rails-3,Ruby On Rails 3,我正在使用嵌套表单将数据插入两个表(用户和地址)。我希望在这两个表中都有我的用户电子邮件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|

我正在使用嵌套表单将数据插入两个表(用户和地址)。我希望在这两个表中都有我的用户电子邮件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 %>
使用时:

@user = User.new(params[:user][:address].merge!(:email => params[:user][:email]))
我收到错误“未定义的方法合并”

用户模型(仅与问题相关的部分)


在地址模型中,我得到了语法错误。所以我试着不用它。用户id street,city获得了正确的值,但email字段没有得到任何信息。

您可以从控制器将其添加到params哈希中:

params[:user][:address].merge!(:email =>  params[:user][:email])

我按照你的建议试过了,但没有成功。我也试过。。。参数[:用户][:地址\属性]。合并!(:email=>params[:user][:email])。。。。“我的地址”表中的“仍然电子邮件”字段未获得任何值。您可以发布控制器和模型以尝试了解发生了什么情况吗?
@user = User.new(params[:user][:address].merge!(:email => params[:user][:email]))
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
params[:user][:address].merge!(:email =>  params[:user][:email])