サイトのカスタマイズ可能なナビゲーション メニューを作成していますが、次の問題が発生しました。
サイト上の任意のコントローラーとアクションへの URL を生成し、必要に応じてパラメーターを渡す必要があります。私は単に次のように言うだけで前者を行うことができました:
url_for(:controller => nav[:controller_name], :action => nav[:action_name])
これは、{controller}/{action} に送信するのに最適です。例えば。ニュース/記事
オプションを投入すると、ゲームが突然変わります。次に、{controller}/{action}/{category}/{slug}/{id} のようなものに送信する必要があります。
例えば。ニュース/記事/世界支配/モンタナ-マックス-誓い-復讐/12345
上記のヘルパーは、次のようなものになります。
news_article_path('world-domination', 'montana-max-vows-revenge', '12345')
引数が原因で、バニラの url_for でそれを複製できませんでした。
私がやったこと、そして私が本当に好きではないことは次のとおりです。
url_for(send("#{nav[:controller_name]}_#{nav[:action_name]}_path", *nav[:options]))
send を使用してヘルパーを生成し、それに kwargs リストを渡します。確かにそれを行うためのより良い方法があると確信していますか?