2014-11-21 31 views
0

我有一個商家的房源頁面,每個顯示頁面都有一個窗體。由於這個設置,這意味着我需要2個不同的新建/創建操作。我試圖用下面的代碼來定義:沒有路線發現與表格的問題

<%= form_for @lead, :url => { :action => :leadcreate } do |lead|%> 

但是,這沒有奏效。在我的路線文件中,我也有要求列表的資源,並且由於引線包含在列表控制器中,我預計這會覆蓋它,但顯然不是。

然後我得到的錯誤:

No route matches {:action=>"leadcreate", :controller=>"listings", :id=>"1" 

<%= form_for @lead, :url => { :action => :leadcreate } do |lead|%> 

任何想法是什麼問題嗎?

+0

你可以請你的代碼顯示你的路線文件,屬於這個? – 2014-11-21 22:13:19

+0

資源:列表 – 2014-11-21 22:16:33

+0

@StephRose列表是控制器,它具有leadnew和leadcreate方法 – 2014-11-21 22:16:48

回答

0

什麼控制器有這個:leadcreate操作?你作爲一個參數去通過控制器的名字:url幫手

應該是:<%= form_for @lead, url: {controller: 'controller_name', action: :leadcreate } do |lead|%>

另一種選擇是使用生成的路線: <%= form_for @lead,listings_lead_path do |lead|%>或任何時候你在終端

+0

列表控制器,我試過<%= form_for @lead,:url => {:controller =>「listings」:action =>: #create} lead |%>並收到語法錯誤,意外的keyword_ensure,期待$ end error – 2014-11-21 22:16:10

+0

@JayMcNaught再次檢查更新的答案,逗號在controllr和動作之間錯過 – 2014-11-21 22:17:22

+0

沒有路由匹配{:action =>「leadcreate」 ,:controller =>「listings」,:id =>「1」} – 2014-11-21 22:21:34

0
運行 rake routes的路徑被稱爲

在你的路線文件中,你可能想要這樣的東西。

resources :listings do 
    member do 
    post :leadcreate 
    end 
end 

這會給你leadcreate_listing_path在你的窗體中使用。

但是,如果潛在客戶始終在列出的範圍內,則可以使用嵌套資源。

resources :listings do 
    resources: :leads 
end 

然後創建一個線索控制器來處理它們。網上有很多關於如何操作的信息,然後你可以使用標準的restful actions/crud來創建它們。

+0

你的第一個建議,現在我得到一個缺少模板錯誤?真的,我只是想要它發送表單,然後重新指向同一頁面。 – 2014-11-21 22:33:23

+0

使用{:locale => [:en],:formats => [:html],:variants => [],:handlers => [:erb,:builder,:raw]缺少模板列表/ leadcreate,application/,:ruby,:coffee,:jbuilder]}。搜索範圍:*「C:/ Users/Callum/Documents/directory/app/views」*「C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/devise-3.2.4/app/views「 – 2014-11-21 22:34:50

+0

只要確保您的潛在客戶創建操作重定向。如果它在沒有重定向的情況下到達動作的結尾,它將默認嘗試渲染帶有動作名稱的模板 – Doon 2014-11-21 23:13:11