首页 > 解决方案 > 在 ruby​​ on rails 中使用 Ajax 增加模型中的列

问题描述

我是 Rails 新手,在我的 rails 应用程序中为销售模型增加整数列(数量)时遇到问题。用户可以使用以下按钮增加应用程序中产品的数量:

销售/show.html.erb

 <tbody>
 <% @ven_pros.each {|s| %>
                  <tr>

                    <td><%= link_to ' + ', "/sale_products/#{params[:id]}/increment/#{s.id};", class: "btn btn-md btn-primary" %></td>

                  </tr>

                <% } %>
 </tbody>

这是我的路线

路线.rb

get   'sale_products/:id/increment/:product_id' , to: 'sale_products#increment'

这是我的递增动作

sale_products_controller.rb

  def increment
@pro = SaleProduct.find(params[:product_id])
@pro.increment!(:quantity)

@pro.save!
respond_to do |format|
  format.html { redirect_to sale_url(params[:id]), notice: 'Quantity was successfully increment.' }
  format.json { head :no_content }
end
end

这对我有用,但是每次用户想要增加数量时都会加载页面

我怎么不能使用 ajax/javascript

标签: javascriptruby-on-railsajaxruby-on-rails-5

解决方案


另一种方法是进行远程调用

<%= link_to ' + ', "/sale_products/#{params[:id]}/increment/#{s.id};", class: "btn btn-md btn-primary", remote: true %>

然后在您的增量方法中的控制器中:

def increment
  @pro = SaleProduct.find(params[:product_id])
  @pro.increment!(:quantity)
end

创建一个文件来处理jquery,它应该与方法同名。

文件将是: increment.js.erb

该文件的内容:

$('.quantity-updated').html('<%= @pro.quantity %>');

你完成了


推荐阅读