2009-08-17 64 views
0

創建一個空白的Rails應用程序,並將兩個文件放在public foler下:file1.html和file2.html。請求http:// localhost:3000/file2.html時發生路由錯誤[POST]

文件的內容是這樣的

<h1>Post</h1> 
<form action='/file2.html' class='openid' method='POST'> 
      <input name='openid_username' type='text' /> 
      <input type='submit' value='Login' /> 
</form> 
<h1>GET</h1> 
<form action='/file2.html' class='openid' method='GET'> 
      <input name='openid_username' type='text' /> 
      <input type='submit' value='Login' /> 
    </form> 

如果我上透過點擊第一種形式,我得到

No route matches "/file2.html" with {:method=>:post}): 

當我做一個GET請求,它工作正常。這是爲什麼?我在webrick和mongrel都試過,行爲也一樣。

回答

0

您需要設置路線來處理帖子。如果你在你的項目的根目錄下運行「rake routes」,它會給你一個當前設置的所有路徑的列表,如果它是一個空白的rails項目,那麼將不會有一個路徑來處理你的file2.html (儘管你不想公開發布到靜態文件,但你應該發佈到控制器)。 GET工作,因爲它只是被視爲一個靜態文件獲取。

嘗試http://guides.rubyonrails.org/routing.html

+0

是否意味着POST請求永遠不會被apache或web服務器處理。在這種情況下,我認爲請求將由web服務器處理,rails甚至不會出現在圖片中。 – 2009-08-18 15:01:53

+0

這取決於你的服務器是如何設置的,但是你提到了webrick和mongrel,所以如果你在一個開發箱上運行,並將你的瀏覽器指向諸如http:// localhost:3000/file1.html之類的東西,那麼你的/file2.html將成爲http:// localhost:3000/file2.html並由rails進程提供服務。這就是爲什麼你會得到這個(rails)路由錯誤信息。 – 2009-08-19 09:58:10

相關問題