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

Rails嵌套资源配置后点击餐厅始终跳转id为1的餐厅问题

问题原因与修复方案

1. 跳转链接参数错误(核心问题)

你在城市详情页的餐厅循环代码中,link_to的第二个参数错误使用了实例变量@restaurant,而非循环迭代出的局部变量restaurant。由于CitiesController的show动作中没有定义@restaurant,实际渲染时会读取到调试时残留的赋值(即id为1的餐厅实例),导致所有链接都指向同一个餐厅。

修复后的视图代码:

<% @restaurants.each do |restaurant| %>
  <h3><%= link_to restaurant.name, [@city, restaurant] %></h3>
<% end %>

仅需要把@restaurant改为不带@的局部变量restaurant即可。


2. 关联数据查询逻辑错误

你当前在CitiesController的show动作中直接查询全量的餐厅、酒店、酒吧数据,没有和当前城市关联,会导致所有城市的详情页都展示全部平台的资源,而非对应城市下的资源。

修复后的控制器代码:

def show
  @city = City.find(params[:id])
  @restaurants = @city.restaurants
  @hotels = @city.hotels
  @clubs = @city.clubs
end

将全量查询改为通过当前城市关联查询即可。


修改完成后重新启动服务测试,点击不同餐厅就会正常跳转至对应id的餐厅详情页。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:45:04