Ruby on rails“没有路线匹配”
问题描述:
我是Rails的新手,只是实现了一些基本的应用程序。刚开始我的第二个应用程序,并遇到了什么是一个基本问题,但谷歌没有让我什么。Ruby on rails“没有路线匹配”
收到此错误:
No route matches {:controller=>"user", :action=>"admin_login"}
这里是我的routes.rb
Blah::Application.routes.draw do
resources :items, :cart, :user
end
这里是我的applications.html.erb
(的想法是,这是当然的头,我试图创建一个'login'的链接,现在只需要将'login'会话变量设置为'1'
<!DOCTYPE html>
<html>
<head>
<title>Blah</title>
<%= stylesheet_link_tag :all %>
<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>
</head>
<body>
<div id="headerHolder">
<div id="title">blah</div>
<div id="menu">
<div class ="menuItem">blog</div>
<div class ="menuItem">
<%= link_to "products", :controller => "items",
:action => "index" %>
</div>
<div class ="menuItem">contact</div>
<div class="menuItem">
<%= link_to "cart", :controller => "cart",
:action => "index" %>
</div>
<div class="menuItem">
<%= link_to_unless_current "admin", :controller => "user",
:action => "admin_login" %>
</div>
</div>
</div>
<div id="content">
<%= yield %>
</div>
</body>
</html>
这是我user_controller.rb
class UserController < ApplicationController
def index
end
def admin_login
session[:login] = 1
session[:cart] = nil
flash[:notice] = "Admin user successfully logged in, cart reset."
redirect_to :controller => :items
end
end
我在我的routes.rb
丢失了怎么办?否则......肯定这是愚蠢的。
答
您需要admin_login
方法添加到路线,如: -
map.connect '/user/admin_login', :controller => 'users', :action => 'admin_login'
答
对于滑轨> 3,你应该使用新的路由语法:
resources :items, :cart
resource :user do
# Route GET /user/admin_login
get 'admin_login', :on => :collection
end
有关路由的详细信息,请参阅Rails guides。
答
找到“配置/ routes.rb中”文件,编辑,找到以下行:
# See how all your routes lay out with "rake routes"
在这一行中添加以下行,如下所示:
map.connect '',:controller=>"index",:action=>"index"
答
可以使用
match 'admin_login' => 'user#admin_login', :as =>'admin_login'
此调用的默认方法是后u可以通过使用
来更改方法行为:via => [:post/:put/:get]
答
有一个在Rails的一种新方法3.您可以使用以下方法:
get 'admin_login' => "user#admin_login"
所以自动“资源”路径只处理“索引”和面向公众的方法可以通过HTML动词访问? – Chris 2010-09-21 04:54:54
是的,脚手架生成的方法是通过资源添加的。 – Anubhaw 2010-09-21 05:10:57