1

我有一个简单的场景,由于某种奇怪的原因证明很困难——我确定我犯了一个简单的错误。

我有一个 GuestController,我需要为其定义自己的操作和路线。目前它只有一个动作,因为我无法解决这个奇怪的问题。这是动作:

def booking
  @booking = Booking.where(:friendly_id => params[:friendly_id])
end

产生参数值的路径是:

match '/:friendly_id', to: 'guests#booking',     via: 'get'

这已经接近我的 routes.rb 的结尾了

所以在我看来 booking.html.rb 我想显示与给定的friendly_id相关的预订ID

<%= @booking.id %>

我收到一个错误:Guests#booking 中的 NoMethodError

任何人都知道为什么会发生这种情况,因为它让我头疼。

4

1 回答 1

1

这里的问题是您没有检索预订,而是生成了 ActiveRecord::Relation :

@booking = Booking.where(:friendly_id => params[:friendly_id])
# should be
@booking = Booking.where(:friendly_id => params[:friendly_id]).first
# or
@booking = Booking.find_by(:friendly_id => params[:friendly_id])
于 2013-09-14T10:58:42.237 回答