簡體   English   中英

Ruby on Rails:在未獲取NoMethodError的情況下無法移動聯系表單的URL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM