ruby-on-rails - 无法保存普通的旧多对一嵌套表单

标签 ruby-on-rails forms ruby-on-rails-3

我使用的是 Rails 3。我有一个模型 Client,它有一个 address_id。在我的 Client 表单中,我嵌套了 Address 字段。这是表单的 Address 部分:

  <%= f.fields_for @client.address do |address_form| %>
    <div class="field">
      <%= address_form.label :line1 %><br />
      <%= address_form.text_field :line1 %>
    </div>
    <div class="field">
      <%= address_form.label :line2 %><br />
      <%= address_form.text_field :line2 %>
    </div>
    <div class="field">
      <%= address_form.label :city %><br />
      <%= address_form.text_field :city %>
    </div>
    <div class="field">
      <%= address_form.label :state_id %><br />
      <%= select("client[address]", "state_id", State.all.collect {|s| [ s.name, s.id ] }) %>
    </div>
    <div class="field">
      <%= address_form.label :zip %><br />
      <%= address_form.text_field :zip %>
    </div>
  <% end %>

当我尝试保存表单时,我得到以下信息:

Address(#23652762896420) expected, got ActiveSupport::HashWithIndifferentAccess(#23652751466220)

我不明白这到底意味着什么,也不明白为什么我会得到它。 params.inspect 如下所示:

{"commit"=>"Update Client",
 "authenticity_token"=>"CBw1fQcsUtXs9x6lKTL4zeoekX1cwuFUrZvZpCShHIc=",
 "_method"=>"put",
 "utf8"=>"\342\234\223",
 "action"=>"update",
 "id"=>"16",
 "client"=>{"name"=>"Rosie O'Donnell",
            "address"=>{"city"=>"Grand Rapids",
                        "line1"=>"216 Grandville Ave SW",
                        "zip"=>"49503",
                        "line2"=>"",
                        "state_id"=>"1"},
            "phone"=>"",
            "salon_id"=>"1",
            "email"=>""},
 "controller"=>"clients"}

有人可以告诉我发生了什么事吗?

最佳答案

请参见此处:http://guides.rubyonrails.org/2_3_release_notes.html#nested-object-forms (这是一篇 Rails 2.3 文章,但它也应该适用于 Rails 3)

在您的 Client 中您需要此行的型号:

accepts_nested_attributes_for :address

此外,将嵌套表单的第一行更改为:

<%= f.fields_for :address do |address_form| %>

关于ruby-on-rails - 无法保存普通的旧多对一嵌套表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4795896/

相关文章:

javascript - 如何使用羊驼创建必填条件字段?

ruby-on-rails - 我如何在 capybara 中单击此按钮

ruby-on-rails - RoR - rspec 测试失败,不应该

javascript - RJS错误: TypeError: element is null

ruby-on-rails - Rails 中的数学方程式编辑器

mysql - 将 mysql 与 rails 一起使用 - 我该如何设置?

ruby-on-rails - PrivatePub 未定义错误 Rails 3.2 private pub

html - 将 CSS 元素加载到 Rails 应用程序中

ajax - 为什么 $form_state 中的 'triggering element' 是表单上的最后一个按钮?

java - Spring 3请求处理程序: When to return a value,何时不,何时重定向?