Ruby on rails 路由错误未初始化常量ContactFormsController

Ruby on rails 路由错误未初始化常量ContactFormsController,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试制作我的第一个Rails应用程序,但遇到了路由问题。 My routes.rb是: Rails.application.routes.draw do resources :users resources :sessions, only: [:new, :create, :destroy] resources :contact_forms, only: [:new, :create, :destroy] root 'static_pages#home' match '

我正在尝试制作我的第一个Rails应用程序,但遇到了路由问题。 My routes.rb是:

Rails.application.routes.draw do
  resources :users
  resources :sessions, only: [:new, :create, :destroy]
  resources :contact_forms, only: [:new, :create, :destroy]
  root 'static_pages#home'
  match '/',        to: 'static_pages#home',       via: 'post'
  match '/manager', to: 'static_pages#manager',    via: 'get'
  match '/manager', to: 'sessions#create',         via: 'post'
  match '/signin',  to: 'sessions#new',            via: 'get'
  match '/signout', to: 'sessions#destroy',        via: 'delete'
end
我的联系人\u form\u controller.rb是:

class ContactFormController < ApplicationController

  def new
    @contact_form = ContactForm.new
  end

 def create
    @contact_form = ContactForm.new message_params
    @contact_form.save
    redirect_to root_path, notice: "Saved"
 end

  private
    def contact_form_params
      params.require(:contact_form).permit(:name, :phone, :email, :text)
    end
end
class ContactFormController
我的新.html.erb文件是:

<%= form_for @contact_form do |f| %>
   <%= f.text_field :name %>
   <%= f.text_field :phone %>
   <%= f.text_field :email %>
   <%= f.text_field :text %>
   <%= f.submit %>
<% end %>

怎么了?谢谢

未初始化的常量ContactFormsController

您应该将控制器类名称
ContactFormController
更改为
contactformscocontroller
,并将文件名更改为
contact\u forms\u controller.rb

此外,在代码中,您需要将
@contact\u form=ContactForm.new message\u params
更改为
中的
@contact\u form=ContactForm.new contact\u form\u params
方法,以避免任何进一步的问题

而且,当你试图创建你的第一个应用程序时,我建议你遵循这些

未初始化的常量ContactFormsController

您应该将控制器类名称
ContactFormController
更改为
contactformscocontroller
,并将文件名更改为
contact\u forms\u controller.rb

此外,在代码中,您需要将
@contact\u form=ContactForm.new message\u params
更改为
中的
@contact\u form=ContactForm.new contact\u form\u params
方法,以避免任何进一步的问题


另外,在您尝试创建第一个应用程序时,我建议您遵循以下内容:contact_forms
定义了ContactFormController
,而不是ContactFormsController
。您需要:

  • 将联系人表单控制器.rb重命名为联系人表单控制器.rb
  • 将类名固定到
    ContactFormsController
  • 视图/联系人表单
    重命名为
    视图/联系人表单
  • 这会解决你的问题

    更新

    同时将
    create
    方法更新为:

    def create
      @contact_form = ContactForm.new contact_form_params
      @contact_form.save
      redirect_to root_path, notice: "Saved"
    end
    

    resources:contact\u forms
    定义了
    ContactFormController
    ,而不是
    contactformscocontroller
    。您需要:

  • 将联系人表单控制器.rb重命名为联系人表单控制器.rb
  • 将类名固定到
    ContactFormsController
  • 视图/联系人表单
    重命名为
    视图/联系人表单
  • 这会解决你的问题

    更新

    同时将
    create
    方法更新为:

    def create
      @contact_form = ContactForm.new contact_form_params
      @contact_form.save
      redirect_to root_path, notice: "Saved"
    end
    

    控制器应具有复数名称以匹配该路由

    所以它应该被称为contact_forms_controllers.rb

    而且是

    class ContactFormsController < ApplicationController
    
       ....
    end
    
    class ContactFormsController

    您的视图文件夹、测试控制器名称也需要更新,因此您可能只想生成一个新的控制器并复制所有内容。(然后删除旧的)

    您的控制器应具有复数名称以匹配该路由

    所以它应该被称为contact_forms_controllers.rb

    而且是

    class ContactFormsController < ApplicationController
    
       ....
    end
    
    class ContactFormsController

    您的视图文件夹、测试控制器名称也需要更新,因此您可能只想生成一个新的控制器并复制所有内容。(然后删除旧的)

    我已经修复了类名,现在它是:
    contactformscocontroller
    。如果文件名是contact_forms_controller.rb,那么我就有一个错误:
    contact forms controller中的name错误#创建
    未定义的局部变量或方法
    message_params',for#`@verrom我在回答中已经通知过了。请检查:)是的,你是对的:)谢谢你的建议,我会:)我已经确定了类名,现在它:
    ContactFormsController
    。如果文件名是contact_forms_controller.rb,那么我就有一个错误:
    contact forms controller中的name错误#创建
    未定义的局部变量或方法
    message_params',for#`@verrom我在回答中已经通知过了。请检查:)是的,你是对的:)谢谢你的建议,我会:)我试图修复它,但出现了下一个错误:
    NameError in contactforms控制器#创建未定义的局部变量或方法
    message_params'for#`@verrom你也需要更新
    create
    方法(请参阅更新)我试图修复它,然后出现下一个错误:
    name ContactFormsController中的错误#为#`@verrom创建未定义的局部变量或方法
    message_params',您还需要更新
    create
    方法(请参阅更新)