2012-06-02 53 views
1

我使用Shopify API http://api.shopify.com/如何構建這使外部API

而且Shopify寶石的form_tag網址:https://github.com/Shopify/shopify_api,做最重lifting-的就不能完全弄清楚如何使這行得通。

要更新@variant對象我需要把這裏:PUT /admin/variants/#{id}.json

在配置/ routes.rb中我與資源默認資源路線:變種,現在我試圖讓一個更新的變體形式資源,但無法配置表單以執行正確的操作。

基本上我構建的form_tag與文本字段輸入,它接受一個整數和更新variant.inventory_quantity

耙路線給我這個:

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 

回答

0

你需要在管理員命名申報變種資源像這樣:

的config/routes.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 guidelayout and rendering的詳細信息。

+0

謝謝你,現在我的狀態代碼如下所示: '<%=的form_tag admin_variant_path(variant.id)辦%> <%= text_field_tag:inventory_quantity%> <%= submit_tag '保存' %> <% end %>' 這給了我一個表單操作,如下所示: '/ admin/variants/214902876' 如何在表單動作結束時獲取.json? – dylanjha