form_tag或form_for用于更新外部API? Rails 3.2

时间:2012-05-22 00:56:36

标签: ruby-on-rails-3 shopify

当连接到外部json api并提交表单来更新资源时,最好使用form_for或form_tag吗?

具体而言,我正在使用Shopify API http://api.shopify.com/

在config / routes.rb中,我使用资源创建了默认资源路由: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

1 个答案:

答案 0 :(得分:3)

您的应用是否定义了模型?如果是这样,您应该能够使用 form_for 。如果没有,那么您必须使用 form_tag

form_for 将Model实例作为参数(因此名称)。表单字段的输出更简洁,因为 form_for 可以从模型中推断出很多。您还可以使用 fields_for 来执行嵌套表单。

如果您使用 form_tag ,那么您需要编写更多代码来正确构建HTTP参数,以便Rails可以重建服务器上的params散列。