【发布时间】:2013-02-06 14:39:00
【问题描述】:
我正在尝试实现一个 Twitter Boostrap 登录表单,它将在每个页面上使用(因为导航栏是布局的一部分)。
但是,在尝试下面的代码时,我收到以下错误:
No route matches {:action=>"show", :controller=>"users"}
用户控制器:
class UsersController < ApplicationController
def index
@users = User.all
end
def show
...
end
def login
...
end
end
_navigation.html.erb:
<div class="dropdown-menu" style="padding: 15px; padding-bottom: 0px;">
<%= form_for("user", :url => user_path) do |f| %>
<%= f.label :email%>
<%= f.text_field(:email, :size => 30, :class => 'login_field', :placeholder => 'Användarnamn')%>
<%= f.label :password%>
<%= f.text_field(:password, :size => 30, :class => 'login_field', :placeholder => 'Lösenord')%>
<%= f.submit "Logga in", :class => 'login_submit btn btn-primary' %>
<% end %>
</div>
config/routes.rb:
get "home/index"
resources :users
resources :projects
resources :tickets
root :to => 'home#index'
rake 路线(与用户有关):
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
我是 Rails 的新手,但奇怪的是它抱怨路由不存在,因为要在用户控制器中找到“显示”操作。
我想知道的另一件事是为什么它寻找动作“show”,而在这种情况下它应该是“login”?
为什么会发生这种情况,我该怎么办?
【问题讨论】:
-
您的
config/routes.rb文件是什么样的? -
您能否在控制台中执行
rake routes并检查用户控制器的登录操作路径是什么。如果登录是用户资源的收集操作,它应该类似于login_users_path。
标签: ruby-on-rails ruby-on-rails-3 forms twitter-bootstrap controller