yucatio@システムエンジニア

趣味で作ったものいろいろ

リソースにfirstとかlastとかtodayでアクセスしたい場合のリンクパスの生成方法 (Ruby on Rails)

railsでリンクパスを作成するときに、

events/123/tickets/1

のようにIDを指定するのではなく、

events/123/tickets/last

lastように、

リソースパスに文字列を指定する方法。

うまくいく方法

シンボルを渡せばよいだけでした。

event_ticket_path(@event, :last)
#=> /events/123/tickets/last
# routes.rb

Rails.application.routes.draw do
  resources :events  do
    resources :tickets
  end
end

うまくいかない方法

モデルのIDに文字列を渡したところ、0に変換されてしまいました。

ticket = @event.tickets.build(id: 'last')
event_ticket_path(@event, ticket)
#=> /events/123/tickets/0
環境