the*_*one 10 resources routes nested ruby-on-rails
在routes.rb中:
resources :cars do
resources :reviews
end
resources :motorcycles do
resources :reviews
end
Run Code Online (Sandbox Code Playgroud)
在ReviewsController中:
before_filter :find_parent
def show
@review = Review.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @review }
end
end
def edit
@review = Review.find(params[:id])
end
# ...
def find_parent
@parent = nil
if params[:car_id]
@parent = Car.find(params[:car_id])
elsif params[:motorcycle_id]
@parent = Motorcycle.find(params[:motorcycle_id])
end
end
Run Code Online (Sandbox Code Playgroud)
生成Review的"show"链接很简单(这可行):
= link_to "Show", [@parent, @review]
Run Code Online (Sandbox Code Playgroud)
类似地,我想引用一个用于评论的通用编辑路径,类似于(这不起作用):
= link_to "Edit", [@parent, @review], :action => 'edit'
Run Code Online (Sandbox Code Playgroud)
有谁知道这是否可能,或者如果不可能,如何实现这一目标?
Kho*_*yen 17
link_to 'Edit Review', [:edit, @parent, @review]
Run Code Online (Sandbox Code Playgroud)
the*_*one 16
事实证明,我正在寻找的答案可以通过URL帮助程序"edit_polymorphic_path"找到(参见:http://rubydoc.info/github/rails/rails/master/ActionDispatch/Routing/PolymorphicRoutes ).为了获得我在上面尝试的链接,我能够通过以下方式实现此目的:
edit_polymorphic_path([@parent, @review])
Run Code Online (Sandbox Code Playgroud)