Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 清除会话数据_Javascript_Ruby On Rails_Ruby On Rails 4_Coffeescript - Fatal编程技术网

Javascript 清除会话数据

Javascript 清除会话数据,javascript,ruby-on-rails,ruby-on-rails-4,coffeescript,Javascript,Ruby On Rails,Ruby On Rails 4,Coffeescript,在我看来,我有一个使用简单表单gem的按钮: <%= simple_form_for(:place_order, :url => "#{}", html: {id: "place_order" }) do |f| %> <%= f.button :button, "Clear Cart", class: "btn btn-primary clearcart", id: "clear_cart", name: "clear_cart" %> &l

在我看来,我有一个使用简单表单gem的按钮:

  <%= simple_form_for(:place_order, :url => "#{}", html: {id: "place_order" }) do |f|  %>
    <%= f.button :button, "Clear Cart", class: "btn btn-primary clearcart", id: "clear_cart", name: "clear_cart" %>
    <%= f.button :submit, "Continue Shopping", class: "btn btn-success contShop", id: "continue_shopping", name: "continue_shopping" %>
    <%= f.button :submit, "Proceed to Checkout", class: "btn btn-danger checkout", id: "proceed_to_checkout", name: "proceed_to_checkout" %>
  <% end %>
控制器发出的清除车操作如下:

jQuery ->
  $('button#clear_cart.btn.btn.btn-primary.clearcart').on 'click', (event) ->
    $.post '/shopping/clear_cart'
  $('input#continue_shopping.btn.btn-success.contShop').on 'click', (event) ->
    $('#place_order').attr 'action', '/shopping'
  $('input#proceed_to_checkout.btn.btn-danger.checkout').on 'click', (event) ->
    $('#place_order').attr 'action', '/shopping/place_order'
  $('input#place_an_inquiry.btn.btn-danger.checkout').on 'click', (event) ->
    $('#place_order').attr 'action', '/shopping/review_order'
def clear_cart
  session[:product_quantity] = nil
  redirect_to shopping_index_path
end
单击clear_cart按钮会出现JavaScript错误,其中clear_cart操作不可用,因为我已将其添加到路由文件中

  resources :shopping, :only => [:index] do
    collection do
      .....
      get   :clear_cart
      post  :clear_cart
    end
  end

我在这里做错了什么,它没有清除会话数据并将我返回到正确的区域?

顺便说一句,您应该让rails通过JS进行清除和重定向

我喜欢这样的东西:

路线

resources :shopping, :only => [:index] do
  collection do
    .....
    post  :clear_cart
  end
end
控制器

def clear_cart
  session.delete(:product_quantity)
  render json: {success: true, url: shopping_index_path}
end
js


正如我在给他的评论中提到的,我无法按照他建议的方式工作,因此我继续采用以下解决方案

控制器:

def clear_cart
  session.delete(:product_quantity)
  if request.post?
    redirect_to shopping_index_path
  end
end
视图:


获取引用错误:响应未定义。我似乎无法获取或发布clear\u cart操作。当它直接命中它时,它确实返回数据,但当我尝试通过CoffeeScript访问它时,我得到了错误。不确定是什么导致了这种情况。您应该向控制器添加一个respond_to block:def clear_cart respond_to do | format | format.js{session.delete(:product_quantity)render json:{success:true,url:shopping_index_path}不管出于什么原因,我都无法让JS访问该操作。它认为这与我正在使用的宝石之一有关。
def clear_cart
  session.delete(:product_quantity)
  if request.post?
    redirect_to shopping_index_path
  end
end
    <%= simple_form_for(:place_order, :url => "#{}", html: {id: "place_order" }) do |f| %>
    <%= f.button :submit, "Clear Cart", class: "btn btn-primary clearcart", id: "clear_cart", name: "clear_cart" %>
    <%= f.button :submit, "Continue Shopping", class: "btn btn-success contShop", id: "continue_shopping", name: "continue_shopping" %>
    <%= f.button :submit, "Proceed to Checkout", class: "btn btn-danger checkout", id: "proceed_to_checkout", name: "proceed_to_checkout" %>
    <% end %>
jQuery(document).ready ->
  $('input#clear_cart.btn.btn-primary.clearcart').on 'click', (event) ->
    $('#place_order').attr 'action', '/shopping/clear_cart'