2016-07-13 3 views
1

Я создаю приложение Rails, и перед вызовом я создаю форму, которую я не могу исправить. У меня есть order модели, которая BELONGS_TO customer так, когда я строй формы я @order = @customer.orders.buildRails :: в вложенной форме модели, update принадлежит_от "родительских" атрибутов

Это хорошо работает, чтобы сохранить заказы атрибутов, но я также хочу, чтобы обновить клиент атрибуты и которые никогда не работает.

Как сохранить заказ и обновить атрибуты «родительского» клиента в том же процессе?

Благодарим за помощь!

Edit:

модель Заказчик:

class Customer < ActiveRecord::Base 
    has_many :orders 
end 

Модель заказа:

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

Мой проект:

  • Ruby On Rails 4.2.6/рубин 2.2.2
  • Разрабатывают 3.5.9
  • Простая форма 3.1.0
+0

Обновление атрибутов клиента означает что? Вы хотите отправить некоторые атрибуты, которые должны быть сохранены в объект 'customer', или вы хотите установить некоторые атрибуты в зависимости от' order'? – lcguida

+0

У клиента есть профиль с некоторыми полями (имя, адрес, город, ...). В форме заказа есть раздел, где клиент может обновить некоторые из своих сведений. Поэтому, когда клиент отправляет форму, он должен создать заказ и обновить информацию о профиле клиента. – anthony

ответ

1

Вы должны обновить своего клиента в своем методе создания. Как насчет:

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 - методы, которые используют сильные параметры для параметров белого списка, отправленных формой.

Очевидно, что я не тестировал код, но ti должен дать вам какое-то направление.

Надеюсь, что это поможет!

Смежные вопросы