2013-07-09 24 views
18

憑藉簡單的控制器:在Rails應用程序發送Ajax後的Jquery

def new 
    @product = Product.new 
    respond_to do |format| 
     format.html #new.html.erb 
     format.json { render json: @product} 
    end 
    end 

    def create 
    @product = Product.new(params[:product]) 
    respond_to do |format| 
     if @product.save 
     format.html { redirect_to @product, notice: "Save process completed!" } 
     format.json { render json: @product, status: :created, location: @product } 
     else 
     format.html { 
      flash.now[:notice]="Save proccess coudn't be completed!" 
      render :new 
     } 
     format.json { render json: @product.errors, status: :unprocessable_entity} 
     end 
    end 
    end 

和簡單的Ajax請求

$("h1").click -> 
    $.post 
    url: "/products/" 
    data: 
     product: 
      name: "Filip" 
      description: "whatever" 

    dataType: "json" 
    success: (data) -> 
     alert data.id 

我嘗試發送新產品,但服務器響應

[2013- 07-09 18:44:44]錯誤錯誤的URI`/ products/[object%20Object]'。

而且數據庫中沒有任何變化。爲什麼沒有獲得/產品uri其產品/ [oobject]的東西?那裏有什麼錯?

+1

只是一個側面說明,但做的respond_to |格式|對於Rails 3是不必要的。您可以在控制器的頂部使用respond_to:html,:xml,然後在action中使用@object_name。如果您有興趣,請參閱Railscast:http://railscasts.com/episodes/224-controllers-in-rails-3?view=asciicast –

回答

29

嘗試了這一點:

$ -> 
    $("h1").click -> 
    $.ajax({ 
     type: "POST", 
     url: "/products", 
     data: { product: { name: "Filip", description: "whatever" } }, 
     success:(data) -> 
     alert data.id 
     return false 
     error:(data) -> 
     return false 
    }) 
+0

爲什麼您返回false並且...爲什麼它會改變任何內容?它的工作,但仍然沒有得到它的原因。 –

+2

可能是一些很好的解釋這裏http://stackoverflow.com/questions/855360/when-and-why-to-return-false-in-javascript – dasnixon

+0

謝謝!我發現它很有用。大! –

相關問題