0

ネストされたフォームを使用した保存については多くのことがわかりますが、それらはすべて私のものとは逆の関係にあります。顧客情報belongs_toUserですが、顧客情報からユーザーの電子メールを更新したいと思います。現在、ビューは機能していますが、保存されていません。

次の関係を定義しています。

class User < ActiveRecord::Base
    has_one :customer_info, dependent: :destroy
  accepts_nested_attributes_for :customer_info
end

class CustomerInfo < ActiveRecord::Base
  belongs_to :user
  attr_accessible :user, :email
  accepts_nested_attributes_for :user
end

そして、次のネストされたフォーム:

%h1 Editing customer_info

= form_for @customer_info, :validate => true do |f|
  - if @customer_info.errors.any?
    #error_explanation
      %h2= "#{pluralize(@customer_info.errors.count, "error")} prohibited this user from being saved:"
      %ul
        - @customer_info.errors.full_messages.each do |msg|
          %li= msg

  %h2 Your Profile

  = fields_for @user do |i|
    .field
      = i.label :email, 'Email'
      = i.text_field :email

  .field
    = f.label :username, "Username"
    = f.text_field :username

  .actions
    = f.submit 'Next'
4

3 に答える 3

1

この方法でやりたいことを行うのは珍しいアプローチですが、コントローラー側のコードを知る必要があります。このような通常のRailsスキャフォールドを使用すると仮定します

def update
  if @customer_info.update_attributes params[:customer_info]
    # the rest of the assumed code
  end
end

その場合は、リレーションにautosaveオプションを追加belongs_to :userして、CustomerInfoを正常に保存した後に保存されるようにしてください。

 belongs_to :user, autosave: true
于 2012-12-06T21:23:33.767 に答える
0

実際には、途中で行ったことで節約できたことがわかりました。デバイスを使用していたので、データベース内の電子メールを変更するだけではなく、確認する必要がありました。

何が起こっているのかをよりよく理解するためにコンソールをチェックアウトするように勧めてくれたAhmadに感謝します。

于 2012-12-06T22:32:17.507 に答える
0

accepts_nested_attributes_forおよびattr_accessibleを使用している場合は、attr_accessible行にuser_attributesを含める必要があります。そうしないと、ユーザーレコードを更新できません。

attr_accessible :user_attributes
accepts_nested_attributes_for :user
于 2012-12-06T22:04:33.203 に答える