ruby-on-rails - Rails:如何检查用户是否存在于控制器中,如果不重定向到其他站点
问题描述
我想检查用户控制器的显示操作中是否存在用户。如果用户不存在,当前用户应该被重定向到他的个人资料页面(通过显示操作)。问题是它一次又一次地被重定向,直到浏览器停止它。
如果我不使用respond_to |format|
(所以没有重定向)并且只使用 set_user 作为浏览器中显示的路径的等效User.find(params[:id])
路径是错误的路径,但它显示了当前用户。
UserController:
def show
respond_to do |format|
if User.exists?(:id)
@user = User.find(params[:id])
format.html
else
set_user
format.html {redirect_to @user, notice: 'User does not exist' }
end
end
end
private
def set_user
@user = current_user
end
因此,如果用户不存在,我希望在浏览器中显示正确的路径和当前用户。要么存在显示正确用户的错误路径,要么存在无限循环的重定向。
解决方案
可能是错误的逻辑是正确的,
def show
respond_to do |format|
if User.exists?(params[:id])
@user = User.find(params[:id])
format.html
else
set_user
format.html {redirect_to @user, notice: 'User does not exist' }
end
end
end
推荐阅读
- json - 在 Hive 中,当路径中有 `$` 符号时如何正确使用 get_json_object 提取值
- python-3.x - 搜索多个关键字和对应的索引
- bash - 获取每个文件中找到的数字的平均值到两个小数位
- google-apps-script - 如何仅通过 Google 表格中相应文件的名称打开电子表格?
- c# - 我可以指定 Web-Api 方法需要 Swashbuckle/Swagger 生成的页面/json 中的文件吗
- python - Seaborn 或 Matplotlib 的语义差分图
- javascript - 如何从 SQL 中的日期时间中删除时间
- scala - Spark RowMatrix columnSimilarities 保留原始索引
- r - 通过管道使用 ggsave
- python - 使用 python 的 BigQuery 外部表