You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用硬编码ID通过link_to链接到特定帖子的编辑页面?

正确实现硬编码ID的Rails编辑页面链接

嘿,我来帮你搞定这个Rails路由链接的问题~你之前的几种写法都没摸对Rails路由助手的正确用法,咱们一步步来理清楚:

先说说你尝试的写法为啥行不通

  • edit_post_path(@post[:id => 3]):这里你试图给@post对象的id赋值,但路由助手需要的是ID参数值,不是修改后的对象;而且页面没循环帖子的情况下,@post大概率都没实例化,这种写法完全没必要。
  • edit_post_path(@post.3):这是纯Ruby语法错误,对象后面直接跟数字是完全不合法的写法。
  • edit_post_path(@post.params[:id == 3]):params是控制器层面的对象,根本不是Post模型的属性;而且[:id ==3]这种键名写法逻辑也完全走不通。

正确的实现方式

因为你要硬编码post_id为3,直接把数字传给路由助手就行,有两种简洁靠谱的写法:

写法1:直接传ID数字

<%= link_to "Add a question", edit_post_path(3) %>

Rails的默认RESTful路由助手edit_post_path会自动把这个数字当作post_id参数,生成对应的编辑页面URL(比如/posts/3/edit)。

写法2:明确指定参数名(可读性更强)

如果你想让代码更直观,也可以用哈希明确指定id参数:

<%= link_to "Add a question", edit_post_path(id: 3) %>

这种写法和上面的效果完全一致,只是能更清晰地告诉其他开发者你正在传递id参数。

额外小提示

如果你的路由有自定义参数名(比如不是默认的id而是post_id),那就要对应调整成edit_post_path(post_id: 3),不过默认的RESTful路由都是用id作为参数名,所以上面的两种写法应该就能完美解决你的问题啦。

内容的提问来源于stack exchange,提问作者Tom Connolly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:10:55