Rails和用户定义的操作

时间:2013-09-14 10:48:25

标签: ruby-on-rails ruby-on-rails-4

我有一个简单的场景,由于一些奇怪的原因而证明是困难的 - 我确信我犯了一个简单的错误。

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

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 %>

我收到一条错误:来宾#booking

中的 NoMethodError

任何人都知道为什么会这样,因为它让我头疼。

1 个答案:

答案 0 :(得分: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])