Другой вопрос о вложенной форме - PullRequest
0 голосов
/ 19 июля 2010

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

Вызов SQL говорит это ..

Parameters: {"commit" => "save", "action"=>"update","_method"=>"put",  "organization"=>{"likes_snacks"=>"0"}, ..

Что верно. 1 и 0 могут быть изменены должным образом, включив и выключив флажок. Но эта информация просто не сохраняется в базе данных, я думаю. Есть идеи?

HAML:

- form_for @user do |f|
  = f.label :username
  = f.text_field :username
.clear
  - fields_for :organization do |org| unless @user.organizations.empty?
    = org.label :likes_snacks, 'Like snacks?'
    = org.check_box :likes_snacks
= f.submit 'save', {class => 'button'}

CONTROLLER:

def edit
  @user = current_user
  @organization = current_user.organizations.first
end

МОДЕЛЬ:

ORGANIZATION.RB:

has_many  :users, :through => :organizations_users

USER.RB:

has_many  :organizations, :through => :organizations_users

Ответы [ 3 ]

2 голосов
/ 19 июля 2010

Похоже, что вы можете сохранить родительские атрибуты, но не дочерние атрибуты.

Чтобы сделать дочерние атрибуты доступными через вложенные формы, вам нужно добавить «# {child_class_name} _attributes» в метод attr_accessible в родительском классе. (Только если в родительской модели используется attr_accessible)

Итак, ваша родительская модель должна выглядеть так:

class User < ActiveRecord::Base
  attr_accessible :username, :organizations_attributes
  accepts_nested_attributes_for :organizations
end

Кроме того, если вы не используете attr_accessible в родительской модели, в этом нет необходимости.

1 голос
/ 19 июля 2010

Я думаю, что интересная часть здесь - это таблица компоновщиков: organization_users.

Принятый ответ на этот вопрос, поэтому вопрос говорит о том, что вам нужно

form_for @user do |f|
  f.fields_for :organization_users do |ff|
    ff.fields_for :organization
0 голосов
/ 21 ноября 2012

Также ознакомьтесь с этой замечательной статьей о accepts_nested_attributes_for, которая очень полезна, когда вы хотите, чтобы одна форма обслуживала несколько моделей.

http://currentricity.wordpress.com/2011/09/04/the-definitive-guide-to-accepts_nested_attributes_for-a-model-in-rails-3/

Надеюсь, вам понравится.

Спасибо

Рамешвар

...