【发布时间】:2011-09-05 02:47:59
【问题描述】:
在 routes.rb 中:
resources :cars do
resources :reviews
end
resources :motorcycles do
resources :reviews
end
在评论控制器中:
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
为评论生成“显示”链接很简单(可行):
= link_to "Show", [@parent, @review]
同样,我想为评论引用通用编辑路径,例如(这不起作用):
= link_to "Edit", [@parent, @review], :action => 'edit'
有谁知道这是否可行,如果不可行,如何实现?
【问题讨论】:
-
原来我正在寻找的答案可以通过 URL 帮助程序“edit_polymorphic_path”找到(参见:rubydoc.info/docs/rails/3.0.0/ActionDispatch/Routing/…)。为了获得我在上面尝试的链接,我能够通过以下方式完成此操作:edit_polymorphic_path([@parent, @review])
标签: ruby-on-rails resources routes nested