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

Ruby on Rails开发:关联模型数据在Show视图展示异常求助

解决Rails Show视图中关联数据展示异常的问题

嘿,我一眼就瞅出问题出在哪啦!你在ERB里用了<%=来调用each方法,这会导致Ruby把each的返回值(也就是整个calendar_dates数组)直接输出到页面上,这肯定不是你想要的效果。

问题代码的核心问题

<%= @play.calendar_dates.each do |calendar_date| %> 这里的<%=会把each遍历后的整个数组打印出来,所以你不仅会看到渲染的<li>元素,最后还会多出一串类似#<CalendarDate:0x000000010...>的数组对象字符串。

修正后的代码

把<%=改成<%就好啦,因为我们只需要执行循环逻辑,不需要输出循环的返回值:

<% @play.calendar_dates.each do |calendar_date| %>
  <div class="calendar-date-item">
    <li><%= calendar_date.address_1 %></li>
    <li><%= calendar_date.address_2 %></li>
    <li><%= calendar_date.zip %> - <%= calendar_date.town %></li>
  </div>
<% end %>

(顺便提一句,你代码里的adress应该是拼写错误,正确的是address,如果数据库字段是对的,记得同步修正视图里的变量名哦)

额外优化建议

为了让页面结构更合理,建议把每个calendar_date的信息包裹在一个容器里(比如上面的<div>),或者把每个日期的信息放在一个单独的<ul>中,避免所有列表项都处于同一层级:

<% @play.calendar_dates.each do |calendar_date| %>
  <ul class="calendar-date">
    <li><%= calendar_date.address_1 %></li>
    <li><%= calendar_date.address_2 %></li>
    <li><%= calendar_date.zip %> - <%= calendar_date.town %></li>
  </ul>
<% end %>

这样修改后,关联的calendar_date数据就能正常渲染,不会再出现多余的数组输出啦!

内容的提问来源于stack exchange,提问作者Rémy Le Dernier Bop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:24:55