0

これが答えられていたら、私を許してください。こことGoogleの両方で、これに対する答えを探すのに数時間を費やしました.

Ruby on Rails を始めたばかりです。フォームから最初に送信されたデータを 2 つの異なるモデルに保存した後、API 応答からのデータでモデルを更新しようとしています。

つまり、基本的に User モデルと Character モデルがあります。サインアップ フォームは、ユーザーとそのキャラクターに関するデータを収集します。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 %>

これにより、User モデルに送信されたすべてのユーザー情報と、Character モデルに送信されたレルムと名前が正常に送信されます。問題ありません。ただし、すべての文字情報を提供する API から作成したばかりの Character レコードに入力するフィールドがいくつかあります。これを行う最も効率的な方法は、フォームが送信された後、API から返されたデータでレコードを更新する (またはレコードを保存する前にデータを追加する) ことです。

返された特定のフィールドとデータについてのヘルプは必要ありません。フォームが送信された直後に API リクエストを作成し、すべてのデータでレコードを完成させる方法を探しています。

4

1 に答える 1

0

callback (:after_create) を使用することをお勧めします。

API 処理に応じて、それらのいずれかを選択できます。:after_save :before_save :before_create

どのコールバックでも、API からデータを取得し、他の文字情報を入力するだけです。

それが役立つことを願っています。幸運を 。

于 2012-03-26T09:25:57.583 に答える