передача родительского идентификатора в remote_form частичное при создании элемента - PullRequest
0 голосов
/ 01 октября 2009

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

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

В новой форме я использовал другой код для создания новой фотографии:

<% form.fields_for :screenshots, :html => { :multipart => true }  do |screen_form| %>
    <%= render :partial => 'screenshot', :locals => { :form => screen_form } %>
<% end %>

Частичное для этого очень просто, как это (минус некоторые javascript-файлы ajax, которые я вставил для вложенных моделей):

<%= form.label :photo, "Screenshot:" %>
<%= form.file_field :photo %>

Это все работает отлично, и волшебным образом идентификатор человека ассоциируется со скриншотом при создании в person_id. У меня даже нет контроллера для скриншотов, и он все еще работает.

Однако, это не работает для моих цитат.

<% remote_form_for :quote, :html => { :method => :put }, :url => {:controller => "quote", :action => "create", :person_id => @person.id}  do |quote_form| %>
<%= render :partial => 'quote', :locals => { :form => quote_form } %>
 <% end %>

Частичное для этого также очень просто.

  <%= form.label :quote_text %>
  <%= form.text_field :quote_text %>
    .........
 <%= form.submit 'Create' %>

Я не совсем уверен, смогу ли я указать там удостоверение личности, но оно не жаловалось. Однако это тоже не сработало. Контроллер котировок очень прост.

  def create
    @quote = Quote.create(params[:quote])
  end

В настоящее время он помещается в БД, но person_id не заполняется, поэтому я не могу найти кавычки, связанные с конкретным человеком. Извините, если это глупый вопрос, но я как бы изучаю Rails, настраивая учебники и собирая их вместе, так что терпите меня :) Это просто таинственно, как работает фото без НЕТ контроллеров или специальных вещей, и это не так .

1 Ответ

0 голосов
/ 01 октября 2009

Первая форма - это личная форма, в основном с полями моментальных снимков, связанных с ней, поэтому, глядя на ваш HTML, вы найдете что-то вроде person [snapshots] [photo], эта форма будет отправлена ​​на персональный контроллер.

Передача идентификатора человека во вторую форму является ключом, чтобы заставить его работать, однако немного странно, что он не работает, форма будет отправлена ​​в контроллер котировок. Вы убедились (посмотрите журнал), что хэш params имеет атрибут person_id?

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