清除会话数据
Clearing Session data
在我看来我有一个按钮使用 simple_form 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 %>
我的CoffeeScript如下:
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'
我的 clear_cart 来自控制器的操作如下:
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
我在这里做错了什么,它没有清除会话数据,return我要更正区域?
顺便说一下,您应该让 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
$('button#clear_cart.btn.btn.btn-primary.clearcart').on 'click', (event) ->
$.post '/shopping/clear_cart'.success(response) ->
window.location = response.url
正如我对 nesiseka 的评论中提到的,我无法按照他建议的方式进行操作,因此我继续采用以下解决方案。
控制器:
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'
在我看来我有一个按钮使用 simple_form 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 %>
我的CoffeeScript如下:
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'
我的 clear_cart 来自控制器的操作如下:
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
我在这里做错了什么,它没有清除会话数据,return我要更正区域?
顺便说一下,您应该让 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
$('button#clear_cart.btn.btn.btn-primary.clearcart').on 'click', (event) ->
$.post '/shopping/clear_cart'.success(response) ->
window.location = response.url
正如我对 nesiseka 的评论中提到的,我无法按照他建议的方式进行操作,因此我继续采用以下解决方案。
控制器:
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'