Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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
Ruby on rails 如何避开这个重定向循环?_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何避开这个重定向循环?

Ruby on rails 如何避开这个重定向循环?,ruby-on-rails,Ruby On Rails,我试图让所有用户非法尝试查看其他用户的显示页面重定向到他们自己的显示页面 不过,我在这段代码的else部分中的任何尝试都不能完成这项工作 class UsersController < ApplicationController def show if params[:id] == current_user.id.to_s liked_bookmark_ids = current_user.likes.pluck(:bookmark_id) liked_

我试图让所有用户非法尝试查看其他用户的显示页面重定向到他们自己的显示页面

不过,我在这段代码的else部分中的任何尝试都不能完成这项工作

class UsersController < ApplicationController
  def show
    if params[:id] == current_user.id.to_s
      liked_bookmark_ids = current_user.likes.pluck(:bookmark_id)
      liked_bookmarks = Bookmark.where(id:liked_bookmark_ids)
      liked_topic_ids = liked_bookmarks.pluck(:topic_id)
      @liked_topics = Topic.where(id:liked_topic_ids).order('topics.name')
    else
      # redirect_to :controller => 'users', :id => current_user.id # gives a screwy url
      # redirect_to user_path, :id => 6                            # causes a redirect loop
      # redirect_to :back                                          # causes a redirect loop  
    end
  end
end
class UsersController'users',:id=>current_user.id给出了一个扭曲的url
#将_重定向到用户_路径,:id=>6#导致重定向循环
#重定向到:返回导致重定向循环
结束
结束
结束

正确的方法是什么?

我认为更好的方法是使用检查它是否是当前用户的请求。您可以这样做:

redirect_to user_path(current_user)
class UsersController < ApplicationController
  before_action :check_current_user, only: :show      

  def show
    liked_bookmark_ids = current_user.likes.pluck(:bookmark_id)
    liked_bookmarks = Bookmark.where(id:liked_bookmark_ids)
    liked_topic_ids = liked_bookmarks.pluck(:topic_id)
    @liked_topics = Topic.where(id:liked_topic_ids).order('topics.name')
  end

  private

  def check_current_user
    redirect_to current_user, notice: "Not authorized"  if params[:id] != current_user.id.to_s
  end
end
class UsersController
您甚至可以将
重定向到(当前用户)
。。。你知道什么。。。再简单不过了-谢谢!