1

我正在使用 Shopify API http://api.shopify.com/

还有 Shopify Gem:https ://github.com/Shopify/shopify_api ,它完成了大部分繁重的工作——只是无法弄清楚如何让它工作。

要更新 @variant 对象,我需要在此处放置:PUT /admin/variants/#{id}.json

在 config/routes.rb 中,我使用 resources :variants 创建了默认资源路由,现在我正在尝试制作一个更新变体资源的表单,但无法将表单配置为具有正确的操作。

基本上我正在使用一个文本字段输入构造 form_tag,该输入接受一个整数并更新 variant.inventory_quantity

Rake Routes 给了我这个:

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

0

您需要在 admin 命名空间下声明变体资源,如下所示:

配置/路由.rb

namespace :admin do
  resources :variants
end

编辑:

Rails 接受 JSON 不需要做任何特别的事情。Rails 会将您在 PUT 中传递的 JSON 转换为参数,并使其可用于更新方法。

这是“更新”方法的标准实现:

应用程序/控制器/管理员/variants_controller.rb

def update
  @variant = Variant.find(params[:id])
 
  respond_to do |format|
    if @variant.update_attributes(params[:variant])
      format.html  { redirect_to(@variant,
                    :notice => 'Variant was successfully updated.') }
      format.json  { head :no_content }
    else
      format.html  { render :action => "edit" }
      format.json  { render :json => @variant.errors,
                    :status => :unprocessable_entity }
    end
  end
end

有关详细信息,请参阅Rails 指南以及布局和渲染

于 2012-06-02T09:24:38.167 回答