1

Shopify API http://api.shopify.com/を使用しています

そして、Shopify Gem: https://github.com/Shopify/shopify_apiは、ほとんどの面倒な作業を行いますが、それを機能させる方法を完全に理解することはできません.

@variant オブジェクトを更新するには、ここに PUT する必要があります。PUT /admin/variants/#{id}.json

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

基本的に、整数を取り、variant.inventory_quantity を更新するテキスト フィールド入力で form_tag を構築しています。

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 名前空間でバリアント リソースを宣言する必要があります。

config/routes.rb

namespace :admin do
  resources :variants
end

編集:

Rails が JSON を受け入れるために特別なことをする必要はありません。Rails は、PUT で渡された JSON を params に変換し、update メソッドで使用できるようにします。

「update」メソッドの標準実装は次のとおりです。

app/controllers/admin/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 に答える