我只是在学习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>
由于
答案 0 :(得分:2)
您的form_tag
需要指定控制器以及操作。所以:
<%= form_tag :controller => 'entries', :action => 'sign_in' do %>
请注意,在Rails的术语中,这是一种非常老式的做事方式,我建议您在Rails Routing from the Outside In指南中了解RESTful路线。
答案 1 :(得分:0)
你必须在你的routes.rb
中加入follwingmap.resources :entries, :collection=>{:sign_in=>:post}
重新启动服务器
<% form_tag :controller=>'entries' , :action => 'sign_in' do %>
如果你只在条目文件夹中查看,那么你不需要指定控制器名称,它默认会接受它。写一下
<% form_tag :action => 'sign_in' do %>