我想提出一個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
你能舉一個你需要這個的例子嗎?看起來你想要多個演示者類,但它可能是矯枉過正,取決於你想要完成什麼 –