2

外部 json API に接続し、フォームを送信してリソースを更新する場合、 form_for と form_tag のどちらを使用する方がよいですか?

具体的には、Shopify API http://api.shopify.com/を使用しています。

config/routes.rb で resources :variants を使用してデフォルトのリソース ルートを作成しましたが、バリアント リソースを更新するフォームを作成しようとしていますが、適切なアクションを持つようにフォームを構成できません。

====更新====

はい、Shopify API gem があります: https://github.com/Shopify/shopify_apiは、面倒な作業のほとんどを行いますが、それを機能させる方法がまったくわかりません。

@variant オブジェクトを更新するには、ここに PUT する必要があります。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
4

1 に答える 1

3

アプリはモデルを定義していますか?その場合は、 form_forを使用できるはずです。そうでない場合は、form_tagを使用する必要があります。

form_forは、Modelインスタンスをパラメーターとして受け取ります(そのため、名前が付けられています)。form_forはモデルから多くのことを推測できるため、フォームフィールドの出力はより簡潔になります。また、 fields_forを使用してネストされたフォームを実行することもできます。

form_tagを使用する場合は、Railsがサーバー上でparamsハッシュを再構築できるように、HTTPパラメーターを適切に構築するためのコードをさらに記述する必要があります。

于 2012-05-22T12:21:14.533 に答える