2010-10-31 177 views
2

我跟着O'Reilly Rails的書,但它是爲Rails 2創建的,所以我認爲這就是錯誤所在。Rails 3路由錯誤 - 「沒有路由匹配」

在應用程序/視圖/項/ sign_in.html.erb:

<html> 
<head><title>Hello <%=h @name %> </title> </head> 
<body> 
<h1> Hello <%=h @name %></h1> 

<%= form_tag :action => 'sign_in' do %> 
    <p>Enter your name: 
    <%= text_field_tag 'visitor_name', @name %> </p> 
    <%= submit_tag 'Sign in' %> 
    <% end %> 
</body> 
</html> 

而在應用/控制器/ entries_controller.rb:

class EntriesController < ApplicationController 
    def sign_in 
     @name = params[:visitor_name] 
    end 

    end 

當我點擊 '登錄' 按鈕,它帶我到一個頁面,上面寫着:

路由錯誤

沒有路由匹配「/項/ sign_in」

我會後我的routes.rb文件,但似乎這一切都註釋掉,除了這一行:

GET「條目/ sign_in」

該文件似乎比他們是一個不同在本書中引用,所以這就是爲什麼我認爲這是問題。

感謝您的幫助!

回答

2

Rails 3路由器已經改變了很多。看到這個博客帖子: http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/

你想要做的可能是什麼:

resources :entries do 
    collection do 
    post :sign_in 
    end 
end 

這增加了對項目的整個集合(/項/ sign_in)的動作(相對於#member,這將通過/ entries /:id/sign_in訪問)。 雖然我不確定你爲什麼要在條目資源中登錄某人。您可以爲此創建一個單獨的控制器。

5

如果您正在學習Rails,您會發現使用與您正在學習的相同版本的Rails更容易。無論是學習Rails 2還是升級到3,或者獲得一本新書。

Rails 2和3之間有很多不同之處,所以你會花費你所有的時間和這樣的事情混淆。

相關問題