未初始化的常量CustomerController-Rails

J S*_*olt 1 ruby ruby-on-rails

我在Rails应用程序中的路由遇到麻烦。当我尝试跟随指向new_customer_path的链接时出现此错误:

uninitialized constant CustomersController
Run Code Online (Sandbox Code Playgroud)

这是我要遵循的链接。它在我的电影控制器的“新”页面上。这是“新”页面的相关部分:

<div class="row">
<div class="col-xs-12">
    <hr />
    <%= link_to "Add Customer", new_customer_path, class: 'white' %>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)

客户总监:

class CustomerController < ApplicationController
  def new
    @customer = Customer.new 
  end

  def create
    @customer = Customer.new(customer_params)
    if @customer.save 
      redirect_to new_customer_path
    end 
  end

  private 

   def customer_params
    params.require(:customer).permit(:fname, :lname, :telephone, :email)
   end

end 
Run Code Online (Sandbox Code Playgroud)

路线:

Rails.application.routes.draw do
  resources :customers

  resources :movies do 
    resources :rentals
  end 
  root 'movies#new'
end
Run Code Online (Sandbox Code Playgroud)

客户模型:

 class Customer < ApplicationRecord
    has_many :rentals 
 end
Run Code Online (Sandbox Code Playgroud)

任何想法/提示将不胜感激!

Dbz*_*Dbz 5

可能是您缺少了s吗?

class CustomerController < ApplicationController 应该 class CustomersController < ApplicationController

Rails是配置之上的约定,这意味着:

  • 模型是单数的: Object
  • 控制器是复数的: ObjectsController

如果您愿意,可以更改此设置,但是除非您有充分的理由,否则我会坚持约定。

  • 您是否重命名了控制器,但没有重命名它所在的文件? (5认同)