ruby on rails: добавление дочерних записей к существующему родителю без посещения родителя - PullRequest
1 голос
/ 11 февраля 2009

Как бы вы поступили, позволяя пользователям добавлять дочерние объекты к родителям, не требуя от них перехода к родителю?

Например, добавление статьи в журнал без необходимости переходить в журнал и выпускать сначала? Родитель также может еще не существовать.

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

Вы бы просто изменили создание для ребенка, чтобы оно находило или создавало родителей?

1 Ответ

6 голосов
/ 11 февраля 2009

Я предполагаю, что у вас есть модель журнала, в которой много статей, и модель статьи, которая принадлежит журналу. Во-первых, вы должны создать маршруты к контроллеру статей, которые проходят через журналы, а не через журналы:

ActionController::Routing::Routes.draw do |map|
  map.resources :journals, :has_many => :articles
  map.resources :articles
end

Теперь вы можете перейти к новому действию вашего контроллера статей с помощью URL /articles/new или /journals/1/articles/new. Затем в новом действии в вашем контроллере статей вы делаете это:

@article = Article.new(:journal_id => params[:journal_id])

Который устанавливает для journal_id статьи любой передаваемый параметр. Если параметр не передан, journal_id будет равен nil.

В шаблоне ERB вы просто делаете это, чтобы создать раскрывающийся список:

<%= f.collection_select :journal_id, Journal.all(:order => "name"), :id, :name, :include_blank => true %>

И затем пользователь может выбрать журнал, но если он был передан, он будет предварительно выбран с правильным значением.

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