加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如果在rails中没有返回任何内容,我如何跳过错

发布时间:2020-12-16 19:54:45 所属栏目:百科 来源:网络整理
导读:我正在尝试制作一个系统,用户只能看到他或她写的文章. 在文章控制器中,我放在下面 @article = current_user.articles.find(params[:id]) 其中params [:id]是article_id. 我只想知道如何从显示中跳过错误,如果文章不存在,或者如果用户没有权限查看,则重定向
我正在尝试制作一个系统,用户只能看到他或她写的文章.

在文章控制器中,我放在下面

@article = current_user.articles.find(params[:id])

其中params [:id]是article_id.

我只想知道如何从显示中跳过错误,如果文章不存在,或者如果用户没有权限查看,则重定向到:index操作.
我把@ article.nil?在上面的find语句之后的条件语句,但是似乎上面的find语句会立即生成错误,如下所示.

找不到ID = 1662的文章[WHERE(articles.user_id = 1)]

如何解决这个问题?

解决方法

如果ActiveRecord :: Base.find没有找到记录,总是会抛出异常,这是有意的.你应该只使用find,如果你绝对希望有任何你正在寻找.如果您正在放弃展示动作并找不到该文章,那么您应该解除该异常并渲染404(未找到),而不是重定向到索引(技术上).

如果你想通过它的id属性找到某个东西而不强制执行异常,那么可以使用动态查找器find_by_id,如果没有找到具有该ID的记录,则返回false.

编辑:

动态查找器现在有不同的签名,find_by_id现在应该是:

find_by:id,id_to_find

看到新的Rails Guide on Querying

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读