Ruby on rails Rails与其他模型一起使用嵌套和资源路径

Ruby on rails Rails与其他模型一起使用嵌套和资源路径,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有这样的方法控制器: class Admin::CarManufacturersController < ApplicationController def edit @man = Manufacturer.find(params[:id]) render :layout => 'admin' end def update @man = Manufacturer.find(params[:id]) if @man.update_attr

我有这样的方法控制器:

class Admin::CarManufacturersController < ApplicationController
  def edit
    @man = Manufacturer.find(params[:id])
    render :layout => 'admin'
  end

  def update
    @man = Manufacturer.find(params[:id])
    if @man.update_attributes(params[:car_manufacturer])
      ****
    else
      render :action => :edit, :layout => 'admin'
    end
  end
end
这种形式是局部的:

= form_for [:admin, @man] do |f|
  ###
但当我调用此表单编辑我的数据时,我得到:

undefined method `admin_manufacturer_path'

但我需要管理员、汽车制造商、路径,因为我在控制器中使用了其他型号的名称,但我不能更改它。。。如何使用正确的通行证?我试着在表单中写admin\u car\u manufacturer\u path,但我认为这是个坏主意。如何解决我的问题?

我会考虑重命名控制器/模型以匹配。两者都应该是制造商或汽车制造商。为资源的控制器和模型使用相同的名称可以避免像现在这样的问题

在任何情况下,如果您只需要快速修复,您可以通过为嵌套路由指定
as
选项来解决此问题,如下所示:

namespace :admin do
  resources :manufacturers, as: :car_manufacturers do
    ###
  end
end
资料来源:


这将把你的路径名变成
admin\u car\u manufacturer\u path
等,并且应该允许你以你想要的方式使用你的表单。但我真的建议重命名您的模型和控制器,以便它们匹配。

然后我得到未初始化的常量Admin::ManufacturersControlleri我可以将控制器重命名为manufacturer,但如何命名,如果我有名为model的模型,并键入(汽车主题),这违反了rails规则…为什么不直接做
名称空间:admin do resources:car_manufacturers end
然后使用
admin_car_manufacturer\u path
?因为名称空间:admin do resources:car_manufacturers do resources:car_models do resources:car_type end end end end我有很深的嵌套,需要做,如我所问)
namespace :admin do
  resources :manufacturers, as: :car_manufacturers do
    ###
  end
end