【发布时间】:2016-09-12 22:23:39
【问题描述】:
编辑:我发现了一个类似的线程,我很抱歉没能早点找到它。将遵循此线程的建议:
EDIT2:啊,我在一个类似的帖子中找到了这个:
这是因为在布局模板中调用了 。这是放错地方了。如果您正在查看 /games,则无法编辑,因为不存在 :id。
明白了。我需要创建一个 find_id 方法,不是吗?将保持此答案更新
我正在关注博客的基本 Rails 教程
我已经在 posts_controller 中定义了编辑和更新功能:
定义编辑
@post = Post.find(params[:id])
结束定义更新
@post = Post.find(params[:id])if @post.update(params[:post].permit(:title, :body)) redirect_to @post else render 'edit' end结束
并链接到显示页面中的 edit_path (localhost:3000/posts/1) 工作正常(它转到 http://localhost:3000/posts/1/edit):
但是当我在每个帖子下方的索引页面中放置相同的代码时,它尝试重定向到的 url 是
http://localhost:3000/posts/%23%3CPost::ActiveRecord_Relation:0xd0a2518%3E/edit
很明显,它获取正确的 ID 存在问题。而不是 %23%3CPost::ActiveRecord_Relation:0xd0a2518%3E,它应该只获取要编辑的帖子的 ID。
这可能是一个非常容易解决的问题,但正如您所知,我还很新。提前致谢。哦,有人还可以解释“参数”的来源吗?为什么我不必定义这个?我在posts_controller 的私有部分定义了post_params,但是什么是params?也许我会用谷歌搜索。困惑什么:
如果@post.update(params[:post].permit(:title, :body))
其实就是。我知道它是否更新是一个布尔值,但不确定更新的参数是什么。提前致谢!
【问题讨论】:
标签: ruby-on-rails