ActionController的:: RoutingError

时间:2010-04-26 10:37:30

标签: 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 < ApplicationController
  def sign_in
    @name = params[:visitor_name]
  end
end

查看

<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>

由于

2 个答案:

答案 0 :(得分:2)

您的form_tag需要指定控制器以及操作。所以:

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

请注意,在Rails的术语中,这是一种非常老式的做事方式,我建议您在Rails Routing from the Outside In指南中了解RESTful路线。

答案 1 :(得分:0)

你必须在你的routes.rb

中加入follwing
map.resources :entries, :collection=>{:sign_in=>:post}

重新启动服务器

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

如果你只在条目文件夹中查看,那么你不需要指定控制器名称,它默认会接受它。写一下

<% form_tag :action => 'sign_in' do %>