вложенный ресурс рельсов и маршруты для инициализированного ресурса - PullRequest
0 голосов
/ 23 февраля 2012

У меня проблема с обычным способом работы rails при использовании вложенных форм / ресурсов и маршрутизации.

У меня есть две таблицы: слова и определения ...

Слова имеют много определений,но я не создаю Word, пока у него не будет хотя бы одного определения.

Все на модели и на стороне контроллера работает, но я не могу понять, как обращаться с помощниками формы.

<%= semantic_form_for [@word, @definition] do |f| %>

Это работает отлично, но только если @word действительно существует и не является новой НЕ СОХРАНЕННОЙ записью.IE в контроллере Я делаю find_or_initialize_by вызов Word, затем строю определение из этого.

<%= semantic_form_for [:word, @definition] do |f| %>

Это слова, но только если слова не существует.IE, если я пытаюсь редактировать, используя эту конструкцию, я получаю странный URL (который не работает).words/12345/definition/12345

Я пытался использовать помощник url_for, но результаты были аналогичны приведенным выше ...

Есть еще идеи?

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

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

after_initialize :build_definition

def build_definition
  self.definitions.build unless self.definitions.any?
end
0 голосов
/ 23 февраля 2012

Если вы хотите остаться CRUD и разрешить создание определений перед словами, вы должны продублировать маршруты для определений, один внутри слов и один снаружи, чтобы вы могли сделать:

<%= semantic_form_for [@definition] do |f| %>
...