пример вложенной формы в простой форме? - PullRequest
5 голосов
/ 08 июля 2011

Я все еще борюсь за то, чтобы написать контроллер и фактическую форму, чтобы иметь возможность вкладывать одну форму в другую с помощью дополнительной модели?

У меня есть сообщение, которое имеет много контактов

При отправке сообщения я хочу добавить контакт по желанию.

У меня есть это в качестве примера:

= simple_form_for Message.new, :remote => true do |f|
  #message_form
    = f.error_messages
    %p
      = f.input :account_name, :url => autocomplete_account_name_messages_path, :size => 40, :as => :autocomplete
    %p
      = f.input :topic, :required => true,
                :input_html => {:size => 30}

    #add_contact_btn
      = link_to "Add Contact"

      #contact_form
        = f.simple_fields_for :contactd do |fc|
        = fc.input :email
        = fc.input :first_name
        = fc.input :last_name

    = f.submit 'Give'
    = f.submit 'Request'

Для модели Message.rb у меня есть следующее:

has_many :contacts
accepts_nested_attributes_for :contacts, :reject_if =>:all_blank

Примечание. Когда я использовал: contacts в simple_fields_for, он не работал, поэтому он является единственным. Но наоборот для acceptpts_nested_attributess_for.

В моем контроллере создания сообщения я включил message.contacts.build

Но сейчас я все еще генерирую ноль контактов.

Вот что я передал в виде данных из Google Chrome:

message%5Baccount_name%5D:McKesson
message%5Btopic%5D:testing a contact
message%5Bbody%5D:testing this
sender_id:
receiver_id:23
message%5Bcontacts%5D%5Bemail%5D:888@gmail.com
message%5Bcontacts%5D%5Bfirst_name%5D:Ang
message%5Bcontacts%5D%5Blast_name%5D:Name

Ответы [ 4 ]

8 голосов
/ 08 июля 2011

Правильное имя метода - simple_fields_for (обратите внимание на множественное число)

Кроме того, вам нужно оставить f., чтобы вызвать его для объекта simple_form

4 голосов
/ 15 июля 2011

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

Проект находится на github .

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

0 голосов
/ 20 июля 2011

Я сталкивался с похожими проблемами при работе с вложенными формами. По предложению JustinRoR вам нужно определить attr_accessible: contacts_attributes.

Вы должны быть в состоянии проверить хеш в консоли ruby ​​(я не уверен, что вы пробовали это). Я предлагаю вам распечатать params [: message] и использовать его для создания сообщения из консоли, такого как Message.new (params [: message]). (Примечание: params [: message] - это то, что вы получите, напечатав хэш params [: message]).

Как только он работает в консоли, он должен работать как шарм

0 голосов
/ 16 июля 2011

В моем контроллере создания сообщения я включил message.contacts.build

Но сейчас я все еще генерирую ноль контактов.

Убедитесь, что вы вставиливаш Message.rb моделирует способность принимать атрибуты тоже.

class Message < ActiveRecord::Base
    attr_accessible :contacts_attributes
    has_many :contacts
    accepts_nested_attributes_for :contacts

Я знаю, что он не отвечает на ваш вопрос полностью, но, возможно, это было именно так.Когда дело доходит до моего проекта, он вернул бы ноль, если бы я не включил :contacts_attributes, в моем случае это касается продуктов.Надеюсь, это поможет, даже если я сейчас не использую простую форму!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...