奇怪的Rails路由行为:在嵌套资源中交换两个ID
我在我的应用程序中设置了以下路由(表单属于某个站点):
map.resources :sites do |site| site.resources :forms end
但是,当我尝试使用帮助程序(例如,使用帮助程序)进入编辑(或类似)的路径时
edit_site_form_path(form)
要么
我的url是ID交换过的(/ sites / 5 / forms / 1),其中5是表单ID,1是网站ID。 这是来自page / sites / 1。
救命(?)
edit_site_form_path
方法必须有两个参数,即site_id和form_id。 所以在你的例子中,你只传递form_id。 第一个参数是模型在方法中首先出现的,在这种情况下它是site
。 第二个参数是form_id。
改进的路径方法可能如下所示
edit_site_form_path(form.site, form)
(假设你有一个belongs_to :site
的模型Form
)