Ruby on rails ActionController::路由错误

Ruby on rails ActionController::路由错误,ruby-on-rails,routing,Ruby On Rails,Routing,我只是在学习Rails。我遇到了一个路由错误,尽管我认为我已经在routing.rb中指定了正确的规则。我已附上代码。请帮忙 routes.rb map.connect ':controller/:action' map.connect ':controller/:action/:id' map.connect ':controller/:action/:id.:format' 控制器 class EntriesController < ApplicationControll

我只是在学习Rails。我遇到了一个路由错误,尽管我认为我已经在routing.rb中指定了正确的规则。我已附上代码。请帮忙

routes.rb

  map.connect ':controller/:action'
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
控制器

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

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

你好
“登录”do%>
输入您的姓名:


谢谢

您的
表单标签
需要指定控制器和操作。因此:

<%= form_tag :controller => 'entries', :action => 'sign_in' do %>
'entries',:action=>'sign_in'do%>

请注意,用Rails的术语来说,这是一种非常老式的方式,我建议您在指南中学习RESTful路线。

您必须在路线中包含folling。rb

map.resources :entries, :collection=>{:sign_in=>:post}
重新启动服务器

<% form_tag :controller=>'entries' , :action => 'sign_in' do %>
'entries',:action=>'登录'do%>
如果仅在entries文件夹中查看,则无需指定控制器名称,默认情况下,它将接受该名称。只要写

<% form_tag :action => 'sign_in' do %>
“登录”do%>

他根本不需要包含这些内容。从他的routes.rb文件可以清楚地看出,他没有使用RESTful路由。谢谢你的回答,但它仍然不起作用。我将map.resources添加到routing.rb,它是我的entries文件夹中的唯一视图。我添加了控制器名称,但它仍然不起作用:(您的视图模板文件名是什么?它在哪里?嗨,John…它起作用了:)感谢您对RESTful路由的建议:)