源码地址https://github.com/runup/project 环境 xp 或者 ubuntu13.04 数据库 sqlite3 ruby1.9.3 rails3.2.13
背景描述: 在学习 ruby on rails tutorial 教程,做了发表文章的功能,其中 ariticle belongs to user 问题描述: 每一个用户都可以访问自己发表的文章,但是访问了别人的文章的时候显示报错,http://localhost:3000/articles/11 错误原因 Couldn't find Article with id=11 [WHERE "articles"."user_id" = 27] ,数据库显示没有在 article 这张表中没有 user_id=27 的数据。可能在添加链接的时候参数给错,但是自己新手,没有发现什么问题。 求前辈帮忙看下~~
def show
@user = User.find(current_user)
@article = @user.articles.find(params[:id])
end
@user
是 current_user
, @artical
当然只能看到 current_user
的 artical
, 也就是只能看到登录用户自己的
你的路由里面 .../articles/11
这个 11 才是你的文章的 id,为啥用 user_id 作为搜索条件?是否了解 @article = Article.find(params[:id])
的意思?
#3 楼 @runup 童鞋... Article.find(params[:id])
的意思是在Article
模型中寻找id=params[:id]
的数据 你的 action 逻辑是不对的 反映出你的逻辑也是混乱的 你写的代码如下:
def show
@user = User.find(current_user) #找到当前用户
@article = @user.articles.find(params[:id]) #从当前用户的所有Article里面找到id=params[:id]的Article
end
开动脑筋想一下 既然你想让自己能看到别人的 Article 这个逻辑显然是错误的 因为你把 show 里面的 Article 限定成了必须是当前用户的 Article 当然看不到别人的 我推荐你买本书看看 而不是一开始就上手堆代码 ruby 的乐趣在于用最少的代码解决问题,而不是写了一堆你不了解的代码出来再解决 我觉得 web 敏捷开发之道 4 比较适合现在的你 还有几个细节问题 1、缩进不对 我作为一个重度强迫症患者觉得好痛苦 特别是还空了一行...呜呜呜 2、我推荐你把代码 push 到 gitcafe 大品牌 安全 速度还快 3、思考大于动手 特别是多看书