2014-09-03 92 views
0

我有一个应用程序,消耗Web服务,加载一个对象没有持久化在数据库中(我通过JSON获得并将其变成红宝石对象)。如何将此对象的属性发送到创建表单。通过webservice接收到的一个新对象参照这个对象进行创建。我怎样才能从非持久对象的属性从未持久对象在轨道上

我想点击一个按钮“添加新的”取其属性,并将这些属性添加到要保留在数据库中的新对象的属性。

我该怎么做?

感谢。

回答

1

将api的属性作为JSON接收并解析为红宝石哈希后,您可以将其丢入Model.new

attrs = JSON.parse(api_response_body) 
#=> {"title" => "foobar"} 

@article = Article.new(attrs) 
#=> #<Article title: "foobar"> 

我明白你想在一个请求的API响应,然后用在未来获得的值:例如,你可以在第一页,其中API提出请求的控制器动作做请求实际持久化值到数据库。因此,您需要跟踪请求之间的值。一个简单的方法来acheive将被使用形式与第一页上隐藏字段:

<%= form_for @article do %> 
    <%= f.hidden_field :title %> 
    <!-- more hidden fields here... --> 

    <%= f.submit 'New Article from API Result' %> 
<% end %> 

然后,你可以简单地重新使用你的资源#create动作正常未做任何修改。您还可以免费获得所有的验证,强大的参数等。