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 / routers.rb:
get "home/index"
resources :users
resources :projects
resources :tickets
root :to => 'home#index'
レーキルート(ユーザーと関係があります):
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」がユーザーコントローラー内にあるため、ルートが存在しないと文句を言うのは奇妙です。
私が疑問に思っているもう1つのことは、アクション「show」を検索するのに、この場合は「login」である必要があるのはなぜかということです。
なぜこれが起こっているのですか、そして私は何をしますか?