1

ユーザーがアイテム オブジェクトの名前をテキスト フィールドまたは jquery トークン フィールド ( http://loopj.com/jquery-tokeninput/ )に入力するビュー ページを作成しようとしています。

各アイテムにはコスト属性があり、ユーザーがアイテムを追加するたびに、更新せずに合計コストを動的に表示したいと考えています。

したがって、ページの上部には次のようになります。

「総コスト: $150」、または $30 のアイテムを削除した場合は「総コスト: $120」。

javascript と AJAX が関係していると思いますが、あまり得意ではありません。アドバイスしてください、ありがとう!

4

2 に答える 2

1

これは複雑な質問ですが、できる限りお手伝いします。まず、次のようなテキスト フィールドをフォームに追加することをお勧めします。

show.html.erb:

<%= form_tag({:controller => "cart_items", :action => :create}, {:method => :post, :remote => true}) do %>                    
    <%= text_field_tag :product_name, product.name %>                          
<%end%>     

レールに ajax 呼び出しを強制する :remote=> true に注意してください

その後、コントローラーでそのリクエストを処理する必要があるため、次のようになります。

def create     
    if @current_cart==nil
      @current_cart = Cart.create!
      @current_cart.save
      session[:cart] = @current_cart.id
    end
    @product = Product.find_by_name(params[:product_name])
    @current_cart.add(@product, @product.price)      
    respond_to do |format|
      format.js {redirect_to :back, :notice => "added"}
      format.html {redirect_to :back, :notice => "added"}
    end    
  end

その後、次のような ajaxt 応答を処理するための JavaScript が必要になります。

show.js.erb:

$('.cart').replaceWith('<%= j render :partial => "layouts/cart"%>');

交換するにはカートパーシャルが必要です:

レイアウト/_cart.html.erb:

<%@current_cart.each do |c| %>
 <%=c.product.name%>
<%end%>

私は簡単な答えで表面をなぞっただけですが、方向性のある乾杯が見つかるかもしれません

于 2013-07-12T16:50:41.363 に答える