Примеры? Вложенные формы и обработка нескольких моделей, Rails3 + Datamapper - PullRequest
2 голосов
/ 22 декабря 2010

Я ищу примеры, но не нашел продолжения, потому что все похоже на ActiveRecord.Я понимаю основные концепции того, что видел, и работаю над этим с помощью Datamapper (точнее, dm-acceptpts_nested_attributes).Более подробную информацию можно найти здесь: вложенные формы для 2 моделей в рельсах с использованием dm-accepts_nested_attributes и dm-is-tree

У меня есть две модели формы для публикации с некоторым текстом иИмидж, вот и все.Модели связаны с постом, имеющим n изображений, и изображением, принадлежащим посту.

Я просмотрел несколько различных запросов и сообщений в блогах, но я не нашел ни проектов, ни примеров, которые можно было бы просмотреть, и документации было немного.Также я ученик / новичок / несколько плотный.Я спрашиваю здесь по двум причинам: прорабатывая мою текущую проблему, и поэтому будущие спрашивающие могут найти место.

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

Ответы [ 2 ]

2 голосов
/ 26 марта 2011

Итак, это некоторый код, который я извлек из аналогичного приложения (Rails 3 + DataMapper + dm-acceptpts_nested_attributes + Haml). В моем примере у меня есть медицинская практика, которая имеет много administrator_practices и имеет много администраторов через administrator_practices. Вот соответствующая часть модели:

has n, :administrators_practices
has n, :administrators, :through => :administrators_practices
accepts_nested_attributes_for :administrators

Тогда, на мой взгляд, у меня есть что-то вроде этого:

%h1 Practice Setup
%ol
  = form_for @practice do |f|

    %li
      = f.label :name
      = f.text_field :name

    = f.fields_for :administrators do |administrator_builder|

      %li
        = administrator_builder.label :name, "Administrators Name"
        = administrator_builder.text_field :name

      %li
        = administrator_builder.label :email
        = administrator_builder.text_field :email

      %li
        = administrator_builder.label :password
        = administrator_builder.password_field :password

Это должно сработать. Хитрость заключается в том, чтобы использовать fields_for и создать новый конструктор форм. Затем вы можете рассматривать его в основном как часть основной модели.

Если вы застряли, вы можете разбить на части. Когда я учился собирать подобные вещи, я сначала работал над моделью, а затем пытался создать там вложенную модель. Затем я построил бы свои представления и запустил отладчик внутри моего контроллера, чтобы убедиться, что я получаю правильную информацию внутри объекта params. Иногда я мог достаточно поиграть с параметрами, чтобы увидеть, как это должно быть, а затем вернуться назад и обновить свои представления, чтобы правильно построить форму.

0 голосов
/ 15 апреля 2011

Надеюсь, эта часть официального руководства ответит на ваш вопрос:http://guides.rubyonrails.org/form_helpers.html#building-complex-forms

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