我问这个问题的原因是因为我不是百分之百确定我应该在实施方面做些什么,谷歌搜索可能让我有点不清楚,所以希望有人可以解释。
我有一个"添加到购物车"用于向控制器操作发出XHR请求的按钮,但此控制器具有before_filter authenticate_user!
class CartsController < ApplicationController
before_action :authenticate_user!
def add
$redis.sadd current_user_cart, params[:image_id]
render json: current_user.cart_count, status: 200
end
end
要处理401
我有这件CoffeeScript的重定向
$(document).on "ajaxError", (event, request, settings) ->
if request.status == 401
window.location.href = '/users/login'
此时request.responseText
== You need to sign in or sign up before continuing.
该页面然后重定向到/users/login
,我想显示此消息,因为我会发送任何其他其他Flash消息
<% flash.each do |key, value| %>
<div class="dima-alert fade-in dima-alert-<%= key.to_s == 'notice' ? 'success' : 'error' %>" role="alert">
<button type="button" class="close" data-dismiss="alert">×</button>
<%= value if value.is_a?(String) %>
</div>
<% end %>
如何通过重定向和显示在我的页面上来保持消息
由于
答案 0 :(得分:0)
在javascript中,将响应消息添加为登录URL上的参数:
window.location.href = '/users/login?msg=' + encodeURIComponent(response);
然后在ruby中抓取来自URL参数的消息并将其添加到您的flash
哈希:
flash["response-msg"] = params[:msg]
...之后它将显示在您拥有的flash.each
循环中。
答案 1 :(得分:0)
我不使用ruby +设备,但你尝试过GET-Variable
window.location.href = '/users/login?message=yourMessageText'
或作为路由
window.location.href = '/users/login/message/yourMessageText'