ruby on rails - Route concern and polymorphic model: how to share controller and views? -
given routes:
example::application.routes.draw concern :commentable resources :comments end resources :articles, concerns: :commentable resources :forums resources :forum_topics, concerns: :commentable end end and model:
class comment < activerecord::base belongs_to :commentable, polymorphic: true end when edit or add comment, need go "commentable" object. have following issues, though:
1) redirect_to in comments_controller.rb different depending on parent object
2) references on views differ well
= simple_form_for comment |form| is there practical way share views , controllers comment resource?
you can find parent in before filter this:
comments_controller.rb
before_filter: find_parent def find_parent params.each |name, value| if name =~ /(.+)_id$/ @parent = $1.classify.constantize.find(value) end end end now can redirect or whatever please depending on parent type.
for example in view:
= simple_form_for [@parent, comment] |form| or in controller
comments_controller.rb
redirect_to @parent # redirect show page of commentable.
Comments
Post a Comment