Обновите модель с ответом от API после отправки формы, которая использует вложенные атрибуты - PullRequest
0 голосов
/ 26 марта 2012

Простите, если на это ответили. Я потратил несколько часов на поиск ответа на этот вопрос здесь и в Google.

Я только начинаю работать с Ruby on Rails. Я пытаюсь обновить модель данными из ответа API после сохранения данных, первоначально отправленных через форму, в две разные модели.

Так что в основном у меня есть модель User и модель персонажа. Форма регистрации собирает данные о пользователе и его персонаже. Чтобы сделать запрос API, мне нужно, по крайней мере, получить несколько подробностей о символе, который необходимо передать как часть запрошенных атрибутов (например, имя, область).

Итак, я использую form_for с вложенными атрибутами:

<%= form_for(@user) do |f| %>
      <%= render 'shared/error_messages' %>

      <%= f.label :username %>
      <%= f.text_field :username %>

      <%= f.label :first_name %>
      <%= f.text_field :first_name %>

      <%= f.label :last_name %>
      <%= f.text_field :last_name %>

      <%= f.label :email %>
      <%= f.text_field :email %>

      <%= f.label :password %>
      <%= f.password_field :password %>

      <%= f.label :password_confirmation, "Password Confirmation" %>
      <%= f.password_field :password_confirmation %>

      <%= f.fields_for :characters do |builder| %>

        <%= builder.label :realm %>
        <%= builder.text_field :realm %>

        <%= builder.label :name %>
        <%= builder.text_field :name %>

      <% end %>

      <%= f.submit "Sign Up" %>
<% end %>

При этом успешно отправляется вся информация о пользователе, переданная в модель пользователя, а также область и имя, переданные в модель персонажа. Там нет проблем. Однако у меня есть еще несколько полей, которые я хочу заполнить для записей символов, только что созданных из API, который предоставляет всю информацию о символах. Каков наиболее эффективный способ сделать это, чтобы после отправки формы она обновляла запись (или добавляла данные перед сохранением записи), возвращая данные из API.

Мне не нужна помощь по конкретным полям и возвращенным данным. У меня все работает, я просто ищу способ сделать запрос API и завершить запись со всеми данными сразу после отправки формы.

1 Ответ

0 голосов
/ 26 марта 2012

Предложите использовать обратный вызов (: after_create).

В зависимости от обработки API вы можете выбирать между ними.: after_save: before_save: before_create

При любом обратном вызове просто получите данные из вашего API и заполните информацию о других символах.

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

...