2010-12-18 20 views
0

在 '應用程序/視圖/用戶/ reset.html.erb' 文件我有這樣的代碼:將URL映射到此表單的Rails操作有什麼問題?

<%= form_tag(send_reset_users_path, :method => :post) do %> 
    <%= text_field_tag :email %> 
    <%= submit_tag("Send") %> 
<% end %> 

在 '應用程序/控制器/ * * users_controller.rb' 我有這樣的代碼:

def reset 
    respond_to do |format| 
     format.html # reset.html.erb 
    end 
    end 

    def send_reset 
    ... 
    end 

在 '配置/ routes.rb中' 我有這樣的代碼:

resources :users do 
    collection do 
     get 'reset' 
     get 'send_reset' 
    end 
    end 

當我提交表單,出現錯誤:「無路由匹配」/ users/send_reset「」(瀏覽器URL變爲'.../users/send_reset')。 有什麼不對?如何將URL映射到Rails操作?

P.S:我認爲這個問題是在「配置/ routes.rb中」 ......

+0

貴「復位」工作路徑?如果是這樣,請嘗試: 集合做 得到「復位」,「send_reset」 結束 我覺得有什麼東西失衡的途徑,現在解析導致此失敗對我還沒有搞清楚一些邊緣情況。我已經看到這些變化的工作 - 希望有人會來澄清。 – Cory 2010-12-18 18:32:54

+0

是的,我的'重置'路徑('reset_pjt_users_path' - > URL'.../pjt_users/reset')有效。 – user502052 2010-12-18 18:37:41

+0

不確定,請嘗試切換兩者的順序或從send_reset中刪除下劃線,以確保rails不會將「send_」部分解釋爲「new_」或「edit_」之一。如果兩者都有效,那就是某種命名衝突。 – Thilo 2010-12-18 18:51:23

回答

3

的問題是在這裏:method => :postget 'send_reset',在我看來,你想,當你conntroller期望GET方法爲POST參數

3

您的routes.rb聲明send_reset路線,因爲只有通過get可用。你必須寫post 'send_reset'

resources :users do 
    collection do 
    get 'reset' 
    post 'send_reset' 
    end 
end 
+0

是的,這將是很好的答案:D – codevoice 2010-12-18 18:56:07