Rails 使用 :collection 渲染部分内容

2023-12-29

这很简单,不应该成为问题,但我不明白这里发生了什么。

我有以下代码

class DashboardController < ApplicationController
    def bookings
      @bookings = Booking.all
    end
end

/views/dashboard/bookings.html.erb

<%= render 'booking', :collection => @bookings %>

/views/dashboard/_booking.html.erb

<%= booking.booking_time %>

我收到以下错误

undefined method `booking_time' for nil:NilClass

但是,如果我在 /views/dashboard/_bookings.html.erb 中执行此操作

<% @bookings.each do |booking| %>
   <%= render 'booking', :booking => booking %>
<% end %>

我明白(正确)

2012-12-19 09:00:00 UTC 
2012-12-28 03:00:00 UTC

这里发生了什么?我真的想使用这里定义的 :collectionhttp://guides.rubyonrails.org/layouts_and_rendering.html http://guides.rubyonrails.org/layouts_and_rendering.html


这是一个老问题,但只是为了其他人正在努力解决这个问题

当使用复数集合调用部分时,则 部分的各个实例可以访问该部分的成员 正在渲染的集合通过以部分命名的变量.

From http://guides.rubyonrails.org/layouts_and_rendering.html http://guides.rubyonrails.org/layouts_and_rendering.html

在上面的 OP 示例中,因为部分被称为booking代替bookings,Rails 无法推断要在部分中使用的成员名称,因此需要将其显式传递为as: :booking

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 使用 :collection 渲染部分内容 的相关文章

随机推荐