我想提出一个Rails应用程序,并且我希望能够利用传递到视图的模型对象来获取一些动作的URL这个对象上,类似这样的,例如:如何让模型知道它的控制器在Rails中?
link_to object.public_send(attribute),
{ :controller => object.controller_path,
:action => :show,
:id => object.id }
会是什么是做这个的好方法吗?它可以用像Draper这样的装饰工来完成吗?网上有一些例子吗?
更新。我曾想过这个,并决定装饰者不是一个保存控制器信息的好地方。这不是装饰者的责任。装饰者只应该知道用标记呈现带格式的数据。现在我已经创建了一个名为Accessor
的模块,我尝试将模型与控制器和路由意识混合使用。我仍然怀疑是否有更好的方法去做。
你能澄清你为什么需要这个吗?也许这是你可以用[url_for](http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-url_for)做的事情? –
谢谢,这是接近我想要的,但我已经试过了。 'url_for'的大问题是它依赖于['polymorphic_url'](https://github.com/rails/rails/blob/537ede912895d421b24acfcbc86daf08f8f22157/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb#L90),它知道没有关于模型,并依赖于Inflector来猜测控制器名称。不能使用自定义名称。小问题是我可能想让不同的控制器在不同的情况下管理相同的模型。 – Alexey
你能举一个你需要这个的例子吗?看起来你想要多个演示者类,但它可能是矫枉过正,取决于你想要完成什么 –