2009-10-02 269 views
0

我已經開始學習Rails,直到現在它還是很好。Ruby On Rails路線問題

我使用HAML和這個對我index.haml

= submit_to_remote "submit_btn", "Create", :url => {:controller => "queries", :action => "create"}, :method => "post" 

= submit_to_remote "exe_btn", "Execute", :url => {:controller => "queries", :action => "execute"}, :method => "post" 

試圖運行它

No route matches {:controller=>"queries", :action=>"execute"} 

只要我刪除了這條線時,它給我回這個錯誤

= submit_to_remote "exe_btn", "Execute", :url => {:controller => "queries", :action => "execute"}, :method => "post" 

它的工作沒有問題。

有誰知道我做錯了什麼,對我有什麼建議嗎?

乾杯

EEF

回答

4

修改queries資源配置中/ routes.rb中

map.resources :queries, :member => { :execute => :post} 

如果沒有與表單提交的查詢ID,然後讓它:

map.resources :queries, :collection => { :execute => :post} 

重新啓動服務器。

這是發生,因爲默認map.resources只給你7的資源路線:

指數,新,創建,編輯,更新,顯示和刪除。

現在,當您需要一條名爲execute的新路線時,您需要按上述方法擴展路線。

+0

爲快速響應而歡呼!現在工作正常。再次感謝!! – RailsSon 2009-10-02 16:54:03

0

你在你的config/routes.rb文件中創建了一個對應於:controller =>「queries」,:action =>「execute」的路由嗎?

我猜你有這樣的路線:

map.resources queries 

這告訴Rails來定義該模型的一些REST風格的路線。當你試圖引用其他路由時,Rails找不到它並要求它。

你應該使用修復:

map.resorces queries, :member => {:execute => :post} 

由它來正確地關聯到你的動作。