遠回り。それもまた、道也。

ミチヤじゃあないぞっ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