2014-09-03 70 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動作正常未做任何修改。您還可以免費獲得所有的驗證,強大的參數等。