Rails5.1からroutes.rbで使えるようになったdirectとresolve
Rails5.1からroutes.rbでdirectとresolveというのが使えるようになったけど使ったことなかったので調べた。
direct
directはurlのaliasを作るイメージっぽい
direct :rails_guide do
'https://railsguides.jp'
end
のようにした場合、viewでrails_guide_url
と書くとhttps://railsguides.jp
になる。
blockにはurl_for
の引数を返せば良いらしいので、
direct :user_search, page: 1, per: 20 do |options|
[:users, options.merge(params.permit(:page, :per, :name))]
end
として、user_search_url
と書くとhttp://localhost:3000/users?page=1&per=20
になる。
resolve
resolveはlink_toやform_forなどにModelObjectを渡したときのURL解決をいじるやーつ
resouces :users
resouces :posts
resolve 'Post' do
[:users]
end
のようにして、link_to('hoge', @post)
としたら<a href='/users'>hoge</a>
になる。