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 /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,则需要编写更多代码来正确构造 HTTP 参数,以便 Rails 可以在服务器上重建 params 哈希。

于 2012-05-22T12:21:14.533 回答