所以在我的应用程序主页上,可以通过 ajax 请求调用各种动作。当用户登录时,可以进行这些调用。当用户未登录时,如果他们单击任何转到 ajax 调用的链接,我想将用户重定向到登录页面。
在我的 session_helper 中,我有一个方法在控制器中用作这些操作的 before_filter。
def signed_in_user
unless signed_in?
store_location
redirect_to signin_url, notice: "Please sign in."
end
end
但是重定向不适用于这些调用,因为调用是通过 ajax 进行的。(作为记录,它确实适用于非 ajax 调用)例如:
<%= link_to new_picture_path, remote: true do %>
Add New
<% end %>
有没有办法让这个重定向通过 ajax 工作?我正在使用 rails v3.2.8 和 jquery。正如其他一些帖子所建议的那样,我尝试将以下方法添加到我的应用程序控制器中:
def redirect_to(options = {}, response_status = {})
if request.xhr?
render(:update) {|page| page.redirect_to(options)}
else
super(options, response_status)
end
end
但我收到一个错误:“MissingTemplate 图片/更新”。而且我认为其他一些帖子表明这是因为我使用的是 jquery 而不是原型。任何帮助,将不胜感激。