遠回り。それもまた、道也。
ミチヤじゃあないぞっwww
「弱点は、克服しないと、ねぇ...」でやってたことなんだけど。
params[:controller]を拾って(この時点で、オイラ的にはアウトなんだけどwww)、そこから親リソースの名前を抽出して、スラッシュはアンダースコアに変換して、カレントが子リソースに移っていたら、子リソースの名前を取って、親リソースのID取って、親リソースを単数系にして、第3引数が在ったら、アンダースコアに第1引数を単数化して付けて、その後ろに_path(つけて親リソース名に_id => 親リソースのID, :id => 第三引数)をつけて、第3引数がなければ、アンダースコアに第1引数をつけて、その後ろに_pathをつけて、んで、判定抜けたら、生成された文字列を合成して、んで、evalで投げてたんだけど。
ね?
面倒なこと、やってるでしょ?www
で、どうしても、心に引っかかっていたのが、「カレントのリソース、すなわちpathをそのまま返してくれるメソッドが在れば、もっと単純に出来るはずなのに」だった訳ですわ。
どこかに在る筈なんだよね。
っつうか、無い筈ないんだよね。
rake routesで、ルーティングが出力されるんだから。
で、ふっ、と、思いつく訳だ。
「メソッドもクソも、なくね? カレントのリソースがpathなんだよな? だったらリクエストのパスみればいいんじゃね?」
...だよねー.......
どうしてそういうことが思いつかないかな、オレはwww
で、上記のプロセスを書き換える訳だ。
params[:controller]を拾っていた所を、request.env["REQUEST_PATH"]に。
で、正常動作。
おっ!?
オレ、天才じゃね?
超自画自賛だねwww
...で、ここまでが、寝る前のこと。
今朝起きて、朝飯食って、煙草吸って、ぼうっと考えてた時に、ふっ、と思いつく訳だ。
「アレ? だったら、polymorphic_path作ってevalで投げなくっても、そのままパス返せば、よくね?」
...だよ、ね?......
で、書き直し。
したものが、コレ。
def nested_resources_path(nested_resources, id = nil) parent_resource = request.env["REQUEST_PATH"].gsub(/\/#{nested_resources}$/, "") return "#{parent_resource}/#{nested_resources.to_s}/#{id}" end
...parent_idも要らなくなりましたわwww
で、見出しになる訳だ。
男と女も、同じですかねー
...ああっ、改良点、思いついちゃったwwww