在提交使用嵌套属性的表单后,使用API​​响应更新模型

时间:2012-03-26 04:41:15

标签: ruby-on-rails-3 rails-models

如果已经回答,请原谅我。我花了几个小时在这里和谷歌上搜索这个答案。

我刚刚开始使用Ruby on Rails。在将最初通过表单提交的数据保存到两个不同的模型之后,我尝试使用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创建的字符记录。最有效的方法是什么,以便在表单提交后,它会使用从API返回的数据更新记录(或在保存记录之前添加数据)。

我不需要提供有关特定字段和返回数据的帮助。我已经完成了所有工作,我只是在寻找一种方法来提出API请求并在表单提交后立即完成所有数据的记录。

1 个答案:

答案 0 :(得分:0)

建议使用回调(:after_create)。

根据API处理,您可以在它们之间进行选择。 :after_save的 :before_save :before_create

任何回调只需从您的API获取数据并填写其他字符信息。

希望有所帮助。祝你好运。