Javaエンジニア、Ruby on Railsでアプリを作る

整理券アプリを作成中です

リソースに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
環境
  • Mac : Sierra 10.12.2
  • Ruby : 2.3.3
  • Rails : 4.2.6
  • RubyMine : 2016.3.1
パーフェクトRuby on Rails

パーフェクトRuby on Rails
著者:すがわらまさのり
価格:3,110円(税込、送料込)
楽天ブックスで詳細を見る