1. ホーム
  2. ruby-on-rails

[解決済み] Ruby on rails "No route matches" (ルートに一致するものがない)。

2022-02-05 13:02:38

質問

私はRailsの初心者で、いくつかの基本的なアプリケーションを実装しているところです。 2つ目のアプリに取り掛かったところで、基本的な問題にぶつかりました。

このようなエラーが発生します。

No route matches {:controller=>"user", :action=>"admin_login"}

以下は私のroutes.rbです。

Blah::Application.routes.draw do
  resources :items, :cart, :user
end

以下は私の applications.html.erb (アイデアは、これはもちろんヘッダーで、私は「ログイン」へのリンクを作成しようとしています。 今は、セッション変数 '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'