[英]Ruby on Rails: Cannot Move URL for Contact Form Without Getting NoMethodError
我是Rails的新手,我無法將聯系表單從“ / contacts”移動到“ / contact”。 很簡單,我知道!
我遵循了以下指南,並使一切正常工作: https : //rubyonrailshelp.wordpress.com/2014/01/08/rails-4-simple-form-and-mail-form-to-make-contact-form/
但是,我似乎無法做一些簡單的事情,例如更改URL而不會出錯。 在學習的過程中,這似乎是我應該能夠做的事情...我進行了以下更改:
1)更改了routes.rb:
match '/contacts', to: 'contacts#new', via: 'get'
resources "contacts", only: [:new, :create]
成為
match '/contact', to: 'contact#new', via: 'get'
resources "contact", only: [:new, :create]
2)將“ app / controllers / contacts_controller.rb”重命名為“ app / controllers / contact_controller.rb”
3)更新並更改了“ contact_controller.rb”的第一行:
class ContactsController < ApplicationController
成為
class ContactController < ApplicationController
4)將視圖從“應用程序/視圖/聯系人/”移動到“應用程序/視圖/聯系人/”
我收到以下錯誤:
NoMethodError in Contact#new
undefined method `contacts_path' for #<#<Class:0xa0e4500>:0xa0efb28>
Did you mean? contact_path
考慮到某個地方有“ contacts_path”,我在整個項目中進行了搜索,但沒有“ contacts”。
任何幫助將不勝感激! 謝謝!
Ruby 2.3.3 Rails 5.0.1
問題在於,當對象不持久(新記錄)時, form_for @object
的默認路徑始終是objects_path
。 您必須明確聲明網址,例如...
<%= simple_form_for @contact, as: :contact, url: '/contact', html: { class: "new_contact", id: "new_contact" } do |f| %>
但是,這將在您嘗試編輯現有聯系人時弄亂表單。
<% if @contact.new_record? %>
您將必須執行<% if @contact.new_record? %>
<% if @contact.new_record? %>
和<% else %>
和<% end %>
來處理所需的兩個不同的URL。
因此,最好的建議是遵循慣例! 對控制器使用復數,將路由設置回原來的樣子。
除非您有令人信服的理由違反“約定超過配置”規則,否則不應該這樣做。
該文檔說明了使用的默認URL。 https://apidock.com/rails/ActionView/Helpers/FormHelper/form_for
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.