1

当用户未登录时,它会显示"You need to sign in or sign up before continuing"他尝试执行需要身份验证的操作后的时间。

这就是我想要的,所以没关系。

但是,问题在于,当用户登录后,它会将用户带到空白页面(这是 ajax 请求的 url,所以它是空白的)。

是否可以让他留在同一上一页,并让它执行 ajax 请求remote=>true

我该如何处理这种问题?

[更新]

users_controller.rb

before_filter :authenticate_user!, :only => [:follow, :unfollow]

def follow
    @user = User.find_by_username(params[:id])
    current_user.follow(@user)
    respond_to do |format|
        format.js {render :action=>"follow.js"}
    end
end

看法

  <% if current_user.following?(user) %>
    <%= link_to(unfollow_user_path(user), :remote => true) do %>
     Following
    <% end %>
  <% else %>
    <%= link_to(follow_user_path(user) ,:remote => true) do %>
     Follow
    <%end%>
  <% end %>
4

1 回答 1

1

当用户未登录并执行请求时,他被强制登录,当他成功登录时,他被重定向到上一个页面,即redirect_to :back,但是当他执行ajax请求时,没有html页面呈现ajax 动作(默认跟随)。

def follow
   @user = User.find_by_username(params[:id])
   current_user.follow(@user)
   if request.xhr?  # ajax request
     respond_to do |format|
       format.js {render :action=>"follow.js"}
     end
   else
       redirect_to home_path # or any other path
   end
end
于 2013-02-28T08:27:48.390 回答