未定义的方法`contact_forms_path'

undefined method `contact_forms_path'

我 运行 在尝试创建表单时遇到错误:

ActionView::Template::Error (undefined method `contact_forms_path' for #<#<Class

问题是我从未创建过 contact_forms 路由,所以我不知道为什么我得到 contact_forms_path.

的未定义方法

我的联系表路线是:

get "/contact_form/new", to: "contact_form#new"

我对该表格的看法是 new.html.erb 在我的 contact_form 目录中

<%= simple_form_for @contact_form do |f| %>
    <%= f.input :first_name %>
    <%= f.input :last_name %>
    <%= f.input :email, placeholder: 'example@email.com' %>
    <%= f.input :address %>
    <%= f.input :city %>
    <%= f.input :state %>
    <%= f.input :zip_code %>
    <%= f.input :phone %>
    <%= f.button :submit %>
<% end %>

我的模型是contact_form.rb,我的控制器是contact_form_controller.rb

我需要一点指导。任何帮助表示赞赏。如果需要,我可以传递更多信息。

谢谢!

form_for 假定新 Foo 记录的默认值 url 为 foos_path,如此处解释...

http://apidock.com/rails/ActionView/Helpers/FormHelper/form_for

您需要指定 contact_form 将 post 到...

的路径
post "/contact_forms", to: "contact_forms#create", as: 'contact_forms"

这将是您提交表单时接收参数的路由。

请注意,作为 shorthand,您可以在 routes.rb

中指定
resources :contact_forms, only: [:new, :create]

(假设您将使用更常规的 contact_forms#new ... convention-over-configuration 是对控制器名称使用复数形式)

请试试这个:

将此添加到您的路线中:

post "/contact_form", to: "contact_form#create"

打开终端并运行:

rake routes|grep contact_form

你应该得到这样的回复:

contact_form_new GET      /contact_form/new(.:format)         contact_form#new
contact_form POST        /contact_form(.:format)              contact_form#create

这为您提供了路线的路径。现在您可以在 simple_form_for:

中指定该路径
<%= simple_form_for @contact_form, url: contact_form_path, method: :post do |f| %>