我正在尝试创建一个视图页面,用户在文本字段中输入Item对象的名称,或者jquery标记字段(http://loopj.com/jquery-tokeninput/)
每个项目都有一个费用属性,我想在用户添加项目时动态显示总费用,而无需刷新。
所以在页面顶部会有:
“总费用:150美元”,或“总费用:120美元”,如果您删除价格为30美元的商品。
我觉得这会涉及到javascript和AJAX,但我对它并不十分熟悉。请指教,谢谢!
答案 0 :(得分:1)
好的,这是一个复杂的问题,但我会尽力帮助你,我会首先将该文本字段添加到表单中,如下所示:
show.html.erb:
<%= form_tag({:controller => "cart_items", :action => :create}, {:method => :post, :remote => true}) do %>
<%= text_field_tag :product_name, product.name %>
<%end%>
注意:remote =&gt;如果强制rails执行ajax调用,则为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
之后你需要一些javascript来处理这样的ajaxt响应:
show.js.erb:
$('.cart').replaceWith('<%= j render :partial => "layouts/cart"%>');
你需要一个替代的购物车:
布局/ _cart.html.erb:
<%@current_cart.each do |c| %>
<%=c.product.name%>
<%end%>
我只是快速回答表面,但也许你会发现一些方向
欢呼声
答案 1 :(得分:0)
有兴趣看到相关的视图代码,但一般来说,您只需将各个内容添加到一起即可获得总数。
如果您需要获取文本字段的值,可以使用.val()
并将其转换为int或float,您可以使用parseInt(string)
或parseFloat(string)