2012-05-22 67 views
2

當連接到外部json api並提交表單來更新資源時,最好使用form_for或form_tag?form_tag或form_for更新外部API? Rails 3.2

具體我使用Shopify API http://api.shopify.com/

在配置/ routes.rb中我與資源默認資源路線:變種,現在我試圖讓一個更新變種的資源形式,但可以」將表單配置爲具有適當的操作。

==== ====更新

是有一個shopify API寶石:,做最重lifting-的就不能完全弄清楚如何使它工作https://github.com/Shopify/shopify_api

要更新@variant對象,我需要放在這裏:PUT /admin/variants/#{id}.json

但我不能完全正確地構建的form_tag。我有這些路線:

rake routes: 

variants  GET /variants(.:format)   variants#index 
      POST /variants(.:format)   variants#create 
new_variant GET /variants/new(.:format)  variants#new 
edit_variant GET /variants/:id/edit(.:format) variants#edit 
variant  GET /variants/:id(.:format)  variants#show 
      PUT /variants/:id(.:format)  variants#update 
      DELETE /variants/:id(.:format)  variants#destroy 

回答

3

您的應用程序是否定義了模型?如果是這樣,你應該可以使用form_for。如果沒有,那麼你必須使用form_tag

form_for將Model實例作爲參數(因此是名稱)。表單域的輸出更簡潔,因爲form_for可以從模型中推斷出很多。您也可以使用fields_for來執行嵌套表單。

如果您使用form_tag,那麼您需要編寫更多代碼來正確構建HTTP參數,以便Rails可以重新構建服務器上的參數散列。

+0

我相信我需要使用form_tag,因爲我沒有使用Model實例。我直接從Shopify API創建控制器實例,例如: '@products = ShopifyAPI :: Product.find(:all,:params => {:published_status =>'published'})' – dylanjha

+0

我一直試圖將此實例移入模型中,因爲我認爲這會使我的更新更方便,但我不確定這是可能的。 – dylanjha

+0

我從未使用過Shopify API。我確實使用ActiveMerchant Gem。我們創建了一個從ActiveMerchant :: Billing :: CreditCard派生的瞬態模型類,所以它具有所有的ActiveRecord和Helper工具。 Shopify api有沒有伴侶寶石?我喜歡豐富的模型和輕視圖層。也許我在混淆這個問題。無論如何,form_tag有點乏味,但如果你的表單非常簡單,並且RESTful,那就沒問題。 – pduey