nested_resources_pathを殊更に改良してみた。
「nested_resources_pathを更に改良してみた。」で、作ったメソッドを、更に改良した。
def nested_resources_path(nested_resources, nested_resource_id = nil) parent_resource = request.env["REQUEST_PATH"].sub(/\/#{nested_resources}\/([0-9]*)($|\/.*$)/, "") nested_resource_id = $1 if nested_resource_id.nil? parent_resource = parent_resource.sub(/\/([0-9])($|\/[^\/].*$)/, "") parent_resource_id = $1 return "#{parent_resource}/#{parent_resource_id}/#{nested_resources.to_s}/#{nested_resource_id}" end
- nested_resourcesに指定したリソースをネストした状態(/*親リソース*/*親リソースid*/nested_resources)で、pathを返す
- nested_resource_idを指定している場合、/*親リソース*/*親リソースid*/nested_resources/nested_resource_idを返す
- メソッドを呼び出した際のpathがnested_resourcesを含んでいる場合、/*親リソース*/*親リソースid*/nested_resourcesを返す
- メソッドを呼び出した際のpathがnested_resourceのidを含んでいる場合、そのアクションに関わらず、/*親リソース*/*親リソースid*/nested_resources/nested_resource_idを返す
- メソッドを呼び出した際のpathが/*親リソース*/*親リソースid*/*親アクション*の場合、/*親リソース*/*親リソースid*/nested_resourcesを返す #=> NEW!
おっ、コレで、/hogehoge/1/editとかでも、機能しますよ:-)
しかも、判定/分岐も無くせたし:-)
だがしかしっ!
この後、驚愕の事実がっ!!