1

我正在尝试创建一个视图页面,其中用户在文本字段或 jquery 令牌字段(http://loopj.com/jquery-tokeninput/)中输入 Item 对象的名称

每个项目都有一个成本属性,我想在用户添加项目时动态显示总成本,而不刷新。

所以在页面的顶部会有:

“总成本:150 美元”,或“总成本:120 美元”,如果您删除一个成本为 30 美元的项目。

我觉得这会涉及到 javascript 和 AJAX,但我对它不是很精通。请指教,谢谢!

4

2 回答 2

1

好的,这是一个复杂的问题,但我会尽力为您提供帮助,我建议首先将该文本字段添加到表单中,如下所示:

显示.html.erb:

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

注意 :remote=> true 强制 Rails 进行 ajax 调用

之后在您的控制器中,您将需要处理该请求,因此将是这样的:

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

之后,您将需要一些 javascript 来处理该 ajaxt 响应,如下所示:

显示.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 回答
0

有兴趣查看相关的视图代码,但一般来说,您可以将内容加在一起以获得总数。

如果您需要获取可以使用的文本字段的值.val()并将其转换为 int 或 float 您可以使用parseInt(string)parseFloat(string)

于 2013-07-12T16:34:49.197 回答