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>になる。