如何使用硬编码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
相关产品推荐
相关产品推荐

