2013-06-17 8 views
0

У меня есть следующая ситуация: user имеет несколько assets, и каждый asset имеет одну запись asset_detail.Обновление нескольких записей с использованием одной формы

Модели: действия

class User < ActiveRecord::Base 
    has_many :assets 
end 

class Asset < ActiveRecord::Base 
    has_one :asset_detail 
    belongs_to :user 

    accepts_nested_attributes_for :asset_detail, 
    :allow_destroy => false 

    attr_accessible # ... 
end 

class AssetDetail < ActiveRecord::Base 
    belongs_to :asset 

    attr_accessible # ... 
end 

Контроллер:

def edit 
    @user = current_user 
    @assets = Asset.all 
end 

def update 
    @user = current_user 
    @user.update_attributes(params["user"]) 
end 

Вид:

= form_for @user, url: 'update action url' do |f| 
    = f.fields_for :assets do |ff| 
    = ff.text_field :title 
    = ff.fields_for :asset_detail do |fff| 
     = fff.text_field :value 

Проблема в том, й на всех полях формы заполнены правильно, но я не могу их сохранить. Форма отправляется без каких-либо ошибок, но данные не обновляются.

+0

Вы должны проверить возвращаемое значение '@ user.update_attributes (Params [«пользователь»])' ... – meagar

+0

возвращает 'не true' – mbajur

ответ

0

Я думаю, что ваши модели должны выглядеть следующим образом:

class User < ActiveRecord::Base 
    attr_accessible :assets_attributes #... 
    has_many :assets 
    accepts_nested_attributes_for :assets_attributes 
end 

class Asset < ActiveRecord::Base 
    attr_accessible :asset_detail_attrbutes # ... 
    has_one :asset_detail 
    belongs_to :user 

    accepts_nested_attributes_for :asset_detail_attributes, 
    :allow_destroy => false 
end 

по причине того, что вам нужно, чтобы иметь возможность установить атрибуты через атрибуты хэша-передаваемый каждую модель. НТН!

+0

Неа, до сих пор ничего – mbajur

+0

Просто любопытно - что и является целью данного актива/структура структуры активов? Возможно ли, чтобы вы включили свойства детали активов в актив? – plasticide

+0

ну, код, который я представил, - это просто упрощенная версия системы, которую я кодирую, и она действительно должна быть такой:) В принципе, таблица активов имеет несколько типов активов. Один из них - «бизнес», и только это имеет отношение к asset_details (фактически называемому 'business_details'). – mbajur

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