我正在尝试创建一个视图页面,其中用户在文本字段或 jquery 令牌字段(http://loopj.com/jquery-tokeninput/)中输入 Item 对象的名称
每个项目都有一个成本属性,我想在用户添加项目时动态显示总成本,而不刷新。
所以在页面的顶部会有:
“总成本:150 美元”,或“总成本:120 美元”,如果您删除一个成本为 30 美元的项目。
我觉得这会涉及到 javascript 和 AJAX,但我对它不是很精通。请指教,谢谢!
我正在尝试创建一个视图页面,其中用户在文本字段或 jquery 令牌字段(http://loopj.com/jquery-tokeninput/)中输入 Item 对象的名称
每个项目都有一个成本属性,我想在用户添加项目时动态显示总成本,而不刷新。
所以在页面的顶部会有:
“总成本:150 美元”,或“总成本:120 美元”,如果您删除一个成本为 30 美元的项目。
我觉得这会涉及到 javascript 和 AJAX,但我对它不是很精通。请指教,谢谢!
好的,这是一个复杂的问题,但我会尽力为您提供帮助,我建议首先将该文本字段添加到表单中,如下所示:
显示.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%>
我只是在一个快速的答案上摸索表面,但也许你会发现一些方向欢呼
有兴趣查看相关的视图代码,但一般来说,您可以将内容加在一起以获得总数。
如果您需要获取可以使用的文本字段的值.val()
并将其转换为 int 或 float 您可以使用parseInt(string)
或parseFloat(string)