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

点击「查看此申请」始终打开首个Funding记录的技术求助

问题排查与修复方案

嘿,我一眼就看到问题出在哪了——你的「View this application」链接逻辑错了!

先看你show.html.erb里的这段代码:

<%= link_to "View this application", Funding.find_by(params[:id]), class: "btn btn-primary btn-2x" %>

为什么总是打开第一条记录?

在@child.fundings.each do |funding|的循环里,你用Funding.find_by(params[:id])来获取要跳转的申请,但这里的params[:id]是当前**孩子(child)**的ID,不是循环中当前funding的ID!

当你用Funding.find_by(params[:id])时,Rails会尝试用child的ID去查funding表,大概率只会返回第一条匹配的记录(或者刚好你的第一条funding的ID和child的ID一致),所以不管点哪条申请,最终都会跳转到同一条记录。

怎么修复?

直接用循环里的funding对象生成链接就好,Rails会自动帮你处理正确的路径:

<%= link_to "View this application", funding, class: "btn btn-primary btn-2x" %>

如果你想写得更明确,也可以显式调用funding_path:

<%= link_to "View this application", funding_path(funding), class: "btn btn-primary btn-2x" %>

修复后逻辑

修改之后,循环里的每个链接都会对应当前迭代的funding记录,点击时会把该funding的ID传到fundings_controller的show方法,这时@funding = Funding.find(params[:id])就能正确获取到你点击的那条申请了。

另外补个小提示:Funding.find_by(params[:id])这种写法其实不规范,find_by需要指定具体的键值对(比如Funding.find_by(id: funding.id)),不过在这个场景里我们完全不需要手动查询,直接用循环里的对象是最简洁可靠的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:52:43