私は、Commentable実装のために多相のような関連付けをしています(本当のRailsのものではありません)。私はすべてのコメントに同じビューを使用することができるようにしたいと思います。私の名前付きルートでは、edit_comment_path
に電話して、私の新しい方法に行きたいと思っています。Rails 3名前付きルートのオーバーライド
私のルートは、このようになります。
resources :posts do
resources :comments
end
resources :pictures do
resources :comments
end
resources :comments
を今私は、ヘルパーモジュールでedit_comment_path
をオーバーライドしてきましたが、resources :comments
によって生成された一つが代わりに呼び出さ取得し続けます。私はresources :comments
を維持しています。私は直接コメントにアクセスしたいと思っていますし、Mixinsには私が頼っているからです。ここで
はmodule CommentsHelper
の私のオーバーライドメソッドです:
def edit_comment_path(klass = nil)
klass = @commentable if klass.nil?
if klass.nil?
super
else
_method = "edit_#{build_named_route_path(klass)}_comment_path".to_sym
send _method
end
EDIT
# take something like [:main_site, @commentable, @whatever] and convert it to "main_site_coupon_whatever"
def build_named_route_path(args)
args = [args] if not args.is_a?(Array)
path = []
args.each do |arg|
if arg.is_a?(Symbol)
path << arg.to_s
else
path << arg.class.name.underscore
end
end
path.join("_")
end
あなた自身の質問に答えるときに、この回答に正しい/合格とマークすることを忘れないでください。 – Jeremy
こんにちは、ありがとう。私はその大渦巻きにも近づいていた。私はRailsのドキュメントでこれについて多くを見つけることができませんでした - ブログなどに広がっているようです。あなたは '@ commentable'ロジックを共有することができますか?それはかなり面白いです –
@Joseph Weissmanは私の更新を見ます。このようなものはうまくいくはずです。私は古いコードから切り取って貼り付けましたが、質問は古いものです。 – Dex