我需要在一个页面中列出所有草坪,然后在另一个页面中列出我的所有预订。我正在我的控制器中编写一个方法来列出我的数据库中的所有项目,但问题是它在视图中显示1或者它产生继承错误(在视图中)。到目前为止我所拥有的草坪上有很多预订(实际上应该有一个预订)和一个属于草坪的预订,一切都是通过Activeadmin控制的。我得到的错误是
未定义的方法`描述'对于 草坪:: ActiveRecord_Relation:0x007f4451b00a58>我已经修改了一点错误,所以它可以显示在这里。
这是我的控制器代码。草坪上有标题和描述,所以我不确定为什么会收到错误。我已经为草坪和预订提供了两种不同的方法,但它们都不起作用。这是我的控制器。
def display_lawns
@lawn = Lawn.all
end
def display_status
@lawn = Lawn.where("selected = ?", "true")
@bookings = @lawn.booking
end
这是我的视图文件似乎不适用于Lawn.all我也有一个类似的视图文件的预订与一些变化。
<h2><%= @lawn.description %></h2>
<ul>
<% @lawn.bookings.each do |booking| %>
<li>
<%= booking.description %>
<%= button_to "Select", update_booking_path(booking_id: booking), remote: true %>
</li>
<% end %>
</ul>
答案 0 :(得分:0)
一些提示。
而不是
@lawn = Lawn.where("selected = ?", "true")
最好在模型中添加范围。 @lawn是一个对象数组,因此请使用复数。
def display_lawns
@lawns = Lawn.all
end
def display_status
@lawns = Lawn.all.where("selected = ?", "true")
end
@lawns是一个数组,因此您无法使用@lawn.description
@lawn.first.description
可以正常工作
<h2><%= @lawns.first.description %></h2>
<ul>
<% @lawns.each do |lawn| %>
<li>
<%= lawn.description %>
<%= button_to "Select", update_booking_path(booking_id: lawn.booking), remote: true %>
</li>
<% end %>
</ul>
答案 1 :(得分:0)
Lawn.all
和Lawn.where(...)
返回ActiveRecord::Relation,其中包含多个草坪。
在您看来,您尝试通过@lawn.description
显示草坪的描述,但@lawn
不是单个草坪对象,而是草坪对象的集合,并且该集合没有描述。
要么只显示一个草坪对象,要么遍历@lawn
中的所有对象(并将其重命名为@lawns
)。