【发布时间】:2012-10-03 17:31:49
【问题描述】:
我正在制作一个 Rails 应用程序,我希望能够使用传递给视图的模型对象来获取对该对象执行某些操作的 URL,例如:
link_to object.public_send(attribute),
{ :controller => object.controller_path,
:action => :show,
:id => object.id }
有什么好的方法可以做到这一点?可以用Draper这样的装饰器来完成吗?网上有例子吗?
更新。我考虑过这一点,并认为装饰器不是保存控制器信息的好地方。这不是装饰者的责任。装饰器应该只知道使用标记呈现格式化数据。现在我已经创建了一个名为Accessor 的模块,我尝试将模型与控制器和路由感知混合在一起。我仍然想知道是否有更好的方法。
【问题讨论】:
-
你能解释一下你为什么需要它吗?也许这是你可以用 url_for 做的事情?
-
谢谢,这与我想要的很接近,但我已经尝试过了。
url_for的一个大问题是它依赖于polymorphic_url,它对模型一无所知,并依赖 Inflector 来猜测控制器名称。不能使用自定义名称。小问题是我可能希望有不同的控制器在不同的情况下管理相同的模型。 -
你能举个例子说明你需要这个吗?似乎您想要多个演示者课程,但根据您要完成的任务,这可能有点过分
-
现在我只想将模型或“装饰模型”传递给共享视图,并在视图中处理所有与模型相关的链接。我想知道装饰器是否是添加控制器感知(路由感知)的合适位置。