【问题标题】:Rails 3 Routing Error - "No Route Matches"Rails 3 路由错误 - “无路由匹配”
【发布时间】:2010-10-31 19:47:55
【问题描述】:

我正在关注 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 文件,但似乎除了这一行之外它都被注释掉了:

获取“条目/登录”

这个文件似乎与他们在书中引用的文件不同,所以这就是我认为这是问题所在的原因。

感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails ruby routing


    【解决方案1】:

    如果您正在学习 Rails,您会发现使用与您学习它的书相同版本的 Rails 会容易得多。要么学习 Rails 2,然后再升级到 3,要么买一本新书。

    Rails 2 和 3 之间存在很多差异,因此您将花费所有时间对此类事情感到困惑。

    【讨论】:

      【解决方案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
      

      这会在整个条目集合 (/entries/sign_in) 上添加一个操作(与 #member 不同,后者将通过 /entries/:id/sign_in 访问)。 虽然我不确定您为什么要在条目资源中登录某人。您可以为此创建一个单独的控制器。

      【讨论】:

        猜你喜欢
        • 2011-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多