我正在为我们的网站创建一个可自定义的导航菜单,但遇到了以下问题。
我需要为站点上的任何控制器和操作生成 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 列表。我确定有更好的方法可以做到这一点吗?