Rails根据用户输入动态更新View
Rails dynamically updated View based on user input
我正在尝试创建一个视图页面,用户在其中的文本字段或jquery令牌字段中输入Item对象的名称(http://loopj.com/jquery-tokeninput/)
每个项目都有一个成本属性,每当用户添加项目时,我想显示总成本动态,而不刷新。
所以在页面的顶部会有:
"总成本:150美元",或者如果删除一个成本为30美元的项目,则为"总成本":120美元。
我觉得这会涉及javascript和AJAX,但我不是很熟练。请建议,谢谢!
好的,这是一个复杂的问题,但我会尽我所能帮助你,我建议首先将该文本字段添加到表单中,类似于以下内容:
show.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响应:
show.js.erb:
$('.cart').replaceWith('<%= j render :partial => "layouts/cart"%>');
你需要一个cart parcial来替换:
layouts/_cart.html.erb:
<%@current_cart.each do |c| %>
<%=c.product.name%>
<%end%>
我只是粗略地回答了一下,但也许你会找到一些方向欢呼
会对查看相关的视图代码感兴趣,但通常情况下,您只需将内容相加即可获得总数。
如果需要获取文本字段的值,可以使用.val()
,并将其转换为int或float,可以使用parseInt(string)
或parseFloat(string)
相关文章:
- d3基于用户选择动态更新节点
- 如何从相应的控制器动态更新标题和描述
- 根据CHECKBOX输入值动态更新DIV信息
- HTML动态更新滑块输入
- 如何使用ajax和jquery动态更新数组表
- 如何动态更新输入值属性
- 动态更新chartJ中的图表
- 动态更新Angular2指令中自定义属性的值
- jQuery动态更新数据键和值
- 如何在jQuery的.on()方法中动态更新按钮的ID选择器
- 使用 php/jquery 动态更新单个模态
- 在 Ionic 中动态更新滚动区域
- 具有动态更新的实时标题 (AJAX+jQuery)
- jQuery:动态更新 N 个最新值的列表
- 如何动态更新选择值
- 将URL路径与<a>attr('href')来动态更新.active类
- Jquery调整大小动态更新
- 在javascript中动态更新嵌套对象
- javascript中的文本框未正确动态更新
- 动态更新Ace Editor+Requirejs的语法高亮显示