虽然javascript已关闭,但值会自动更新

时间:2013-12-23 07:09:24

标签: ruby-on-rails

在我的应用程序中,我展示了所有这样的产品 store.html.erb

<% @products.each do |product| %>
    <div class="entry" >
      <%= image_tag(product.image_url) %>
      <h3><%= product.title %></h3>
      <%= sanitize(product.description) %>
      <div class="price_line" >
        <span class="price" ><%= number_to_currency(product.price) %></span>
        <%= button_to "add to cart", line_items_path(:product_id => product),
        :remote => true %>
      </div>
    </div>
<% end %>

我发送的ajax请求:remote =&gt;是的,在我的订单项控制器中,我没有任何.js格式

line_items_controller.rb

  def create
    @cart = current_cart
    product = Product.find(params[:product_id])
    @line_item = @cart.add_product(product.id)

    respond_to do |format|
      if @line_item.save
        format.html { redirect_to(store_url) }        
        format.xml  { render :xml => @line_item,
                             :status => :created, :location => @line_item }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @line_item.errors,
                             :status => :unprocessable_entity }
      end
    end
  end

到目前为止我所理解的是,由于没有format.js添加到购物车不应该添加任何产品到购物车,什么都不应该发生。但是当我在控制器中添加.js格式时

format.js { @current_item = @line_item }

并更新页面我看到添加到购物车后面但没有显示结果。更新页面后,我在购物车中看到15个左右的项目。这是怎么回事?

1 个答案:

答案 0 :(得分:0)

在此处进行更改

<% @products.each do |product| %>
    <div class="entry" >
      <%= image_tag(product.image_url) %>
      <h3><%= product.title %></h3>
      <%= sanitize(product.description) %>
      <div class="price_line" >
        <span class="price" ><%= number_to_currency(product.price) %></span>
        <%= button_to "add to cart", line_items_path(:product_id => product.id),
        :remote => true %> #changes line
      </div>
    </div>
<% end %>

并且对于更新,您必须为此创建.js文件并通过jquery或javascript更新元素和html页面的注入。 并且只使用一种格式,因此控制器方法转到一个响应区域。