2011-07-27 6 views
1

私はajaxを使用して、ユーザーがカートに商品を追加する際に表示されたカートを変更しています。これを行うには:remote => trueを呼び出して、更新されたカートを返送してください。 がそうするようにコントローラメソッドは以下の通りです:ショッピングカート:rails/ajaxで製品エラーを処理しない

def create 
@cart = current_cart 
product = Product.find(params[:product_id]) 
@line_item = @cart.add_product(product.id) 
respond_to do |format| 
    if @line_item.save 
    format.html { redirect_to(magasin_url) } 
    format.js {@current_item = @line_item } 
    format.xml { render :xml => @line_item, :status => :created, :location => @line_item } 
    else 
    format.html { render :action => "new" } 
    format.xml { render :xml => @line_item.errors, :status => :unprocessable_entity } 
    end 
end 

エンド

Iは通知メッセージを送信する代わりに、カートを更新することにより、空の株式を処理できるようにしたいと思います。

私はこの試みた:

if product.stock_to_display <=0 
    respond_to do |format| 
    format.html { } 
    format.js {} 
    end 
end 

をしかし、私は形式に入れているかわかりません。そして、私はRJSの状態を行う方法見当がつかない:だから私は、Ajax/RJSでエラーを処理する方法を知りたい

page.replace_html('panier', render(@cart)) 

page[:panier].visual_effect :blind_down if @cart.total_items == 1 

page[:current_item].visual_effect :highlight, 
            :startcolor => "#88ff88", 
            :endcolor => "#114411" 

page.select("#notice").each {|notice| notice.hide} 

。ありがとう

答えて

0

[OK]を少し試してみた後、私はきれいに見えるものをやった。

コントローラーに@successブール値を作成し、その値に影響を与えた後、RJSでブール値を使用して自分のものを実行するか、通知を表示できます。 ここに新しいRJSがあります。

あなたはディスプレイとjavascriptのエラーを持っている場合、それは「もし通知」の条件

によって制限することができるよう、アプリケーションのレイアウトを確認し
if @success 
    page.replace_html('panier', render(@cart)) 
    page[:panier].visual_effect :blind_down if @cart.total_items == 1 
    page[:current_item].visual_effect  :highlight, 
             :startcolor => "#88ff88", 
             :endcolor => "#114411" 
    page.select("#notice").each {|notice| notice.hide} 
else 
    page.replace_html :notice, flash[:notice] 
    flash.discard 
end 

関連する問題