2011-11-07 151 views
0

我知道有很多關於路由錯誤的意見,但即使經過其中的許多人,並查看路由指南,我無法找出我的問題。路由錯誤 - 沒有路由匹配的AJAX呼叫

我創建了一個Ajax的提交表單的像 -

$('#user_time_zone').live('change', function() {  
    $(this).parents('form:first').submit(); 
}); 

然而,在事件中,我收到路由錯誤

No route matches '/user/time_zone' 

我爲這樣的節目路線

user_time_zone POST /user/time_zone(.:format)   {:controller=>"user", :action=>"time_zone"} 

在路線文件我有類似的條目 -

match 'user/time_zone' => 'user#time_zone', :via => [:post] 

我可能會做錯什麼。

回答

2

也許您發送形式方法GET

存在形式隱藏字段_method=put

你能從development.log並查看錶單POST請求日誌?

+0

實際上,_method = put形式存在隱藏字段。這是由Rails代碼生成的。我聲明瞭form - form_for(@user,:url => user_time_zone_path,:method =>:post,:remote => true)do | f | 。我如何刪除它。也許我在這裏做錯了什麼。生成的表單有一個CSS類edit_user。我也使用Devise,所以也添加了一些/ user/*類型的路由。 –

+0

更新:我已經通過匹配'user/time_zone'=>'user#time_zone',:via => [:put]將路由中的HTTP方法更改爲PUT,並且它似乎正常工作。謝謝 –

+0

我不知道爲什麼手動將隱藏的div爲我工作。也許阿賈克斯加載表單構建器部分混亂了事情。謝謝你的提示。 –

0

嘗試運行

rake routes 

,看到的所有路由被捕獲,

如果你能粘貼您的路線,我們也許能夠幫助你

感謝和問候

sameera

+0

由於長度限制,無法發佈完整的路線文件,但已經給出了從原始郵件中的耙路線中獲取的相關路線。我正在使用設計,雖然也添加了一些/用戶/ *類型的路線,但它們低於此路線規格 –

相關問題