簡體   English   中英

Rails 3路由錯誤-“沒有路由匹配”

[英]Rails 3 Routing Error - “No Route Matches”

我跟隨O'Reilly Rails的書,但它是為Rails 2創建的,所以我認為這就是錯誤所在。

在app / views / entries / 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>

並在app / controllers / entries_controller.rb中:

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

   end

當我單擊“登錄”按鈕時,它將帶我到一個頁面,其中顯示:

路由錯誤

沒有路線匹配“ / entries / sign_in”

我將發布我的routes.rb文件,但除了這一行外,似乎都已被注釋掉了:

得到“ entry / sign_in”

這個文件似乎與他們在書中引用的文件不同,所以這就是為什么我認為這是問題所在。

謝謝你的幫助!

如果您正在學習Rails,那么使用與您正在學習的書相同版本的Rails會容易得多。 要么在Rails 2中學習並在以后升級到3,要么獲得一本新書。

Rails 2和3之間有很多差異,因此您將花費所有時間與此類事情混淆。

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

這將對整個條目集合(/ entries / sign_in)添加一個操作(與#member相反,后者可以通過/ entries /:id / sign_in訪問)。 盡管我不確定您為什么要在條目資源中登錄某人。 您可以為此創建一個單獨的控制器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM