2017-04-08 63 views
2

我是新來的鐵軌,我無法將聯繫表格從「/ contacts」移動到「/ contact」。簡單,我知道!Ruby on Rails:無法移動URL的聯繫人窗體沒有得到NoM​​ethodError

我也跟着下面的指導,並得到了一切工作: 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) 更名爲 「應用程序/控制器/ contacts_controller.rb」 到 「應用程序/控制器/ contact_controller.rb」

3) 更新,並改變了第一立「contact_controller.rb」 的NE:

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」的地方,我做了搜索在整個項目中不存在「聯繫人」。

任何幫助將不勝感激!謝謝!

的Ruby 2.3.3 的Rails 5.0.1

+0

您是否重新啓動服務器? – radubogdan

+0

@radubogdan是的。我已經嘗試了幾次。它突出顯示的是這一行:'<%= simple_form_for @contact,:html => {:class =>'form-horizo​​ntal'} do | f | %>' – S4NK

回答

0

的問題是,對於一個form_for @object當對象不保留(新記錄),默認的路徑總是objects_path。你必須明確說明的URL,像...

<%= simple_form_for @contact, as: :contact, url: '/contact', html: { class: "new_contact", id: "new_contact" } do |f| %> 

但是當你試圖編輯這會搞亂形式現有的聯繫人。

您必須執行<% if @contact.new_record? %><% else %><% end %>才能處理所需的兩個不同網址。

所以最好的建議是真的按照慣例!爲控制器使用複數形式,將路線設置回原來的路線。

除非您有令人信服的理由違反「約定優於配置」規則,否則您不應該這樣做。

該文檔解釋了使用的默認URL。 https://apidock.com/rails/ActionView/Helpers/FormHelper/form_for

+0

這個伎倆!並感謝您提供有關'form_for @ object'的信息,以及「約定優於配置」。這是全新的,所以我非常感謝!我已經投了答案......只是沒有足夠的聲望呢。 :) – S4NK

+0

很高興我能幫忙!雖然您可能無法「回答」答案,但您應該有一個選項來「接受」答案......該選項立即位於答案的左側。如果你能做到這一點,那將是非常棒的。 – SteveTurczyn

+0

完成!謝謝! – S4NK