2016-07-13 4 views
1

私はRailsアプリケーションを構築していますが、修正できない形式の問題の前にいます。 は、私は私が@order = @customer.orders.buildRails ::入れ子モデルのフォームで、belongs_to "parent"属性を更新します

を行うフォームを作成する場合ので、これは注文の属性を保存するために適していますが、私はまた、顧客は動作しませんどのようにも属性を更新したいcustomerをBELONGS_TO orderモデルを持っています。

「親」顧客属性を同じプロセスで保存して更新するにはどうすればよいですか?

ありがとうございました!

編集:

カスタマーモデル:

class Customer < ActiveRecord::Base 
    has_many :orders 
end 

注文モデル:

class Order < ActiveRecord::Base 
    belongs_to :customer 
    accepts_nested_attributes_for :customer 
end 

マイプロジェクト

  • ルビーオンレール4.2.6/2.2.2ルビー
  • 工夫3.5.9
  • シンプルなフォルムあなたの更新アクションで3.1.0
+0

更新の顧客属性は何ですか?あなたは 'customer'オブジェクトに保存されるべきいくつかの属性を送るか、' order'に応じていくつかの属性を設定したいですか? – lcguida

+0

お客様は、いくつかのフィールド(名前、住所、市町村、など)を持つプロフィールを持っています。注文フォームには、顧客が情報の一部を更新できるセクションがあります。したがって、顧客がフォームを送信すると、注文を作成し、顧客プロファイル情報を更新する必要があります。 – anthony

答えて

1

createメソッドで顧客を更新する必要があります。方法:

def create 
     @order = current_customer.orders.build order_params 
     if @order.save 
      @order.customer.update_attributes(order_params[:customer_attributes]) 
      ... 
     else 
      ... 
     end 
     end 
0

を、あなたはこのような何かを行うことができます。

def update 
    @customer = Customer.find(params[:id]) 
    if @customer.update_attributes(customer_params.merge({ order_attributes: order_params})) 
    render @customer 
    end 
end 

ここで、customer_paramsおよびorder_paramsは、フォームによって送信されたパラメータをホワイトリストにするために強いパラメータを使用するメソッドです。

明らかに、私はコードをテストしていませんが、ティはあなたにある方向性を与えるはずです。

希望に役立ちます!

関連する問題