Рубин на рельсах "Нет маршрутов матчей" - PullRequest
10 голосов
/ 21 сентября 2010

Я новичок в Rails и просто внедряю некоторые базовые приложения. Просто запустил мое второе приложение и столкнулся с основной проблемой, но Google ничего мне не дал.

Получение этой ошибки:

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

Вот мои маршруты.рб

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

Вот мой applications.html.erb (идея, конечно, это заголовок, и я пытаюсь создать ссылку для входа в систему. Сейчас просто нужно установить переменную сеанса входа в систему в '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? Или иначе ... я уверен, что это что-то глупое.

Ответы [ 5 ]

20 голосов
/ 22 сентября 2010

Для Rails> 3 следует использовать новый синтаксис маршрутизации:

resources :items, :cart

resource :user do
  # Route GET /user/admin_login
  get 'admin_login', :on => :collection
end

См. Руководства по Rails для получения дополнительной информации о маршрутизации.

6 голосов
/ 21 сентября 2010

Вам необходимо добавить admin_login метод к маршрутам, например: -

map.connect '/user/admin_login', :controller => 'users', :action => 'admin_login'
2 голосов
/ 23 марта 2011

найти файл «config / rout.rb», отредактировать, найти следующую строку:

# See how all your routes lay out with "rake routes"

В этой строке добавить следующую строку:

map.connect '',:controller=>"index",:action=>"index"
1 голос
/ 08 апреля 2013

вы можете использовать

match 'admin_login' => 'user#admin_login', :as =>'admin_login'

Метод по умолчанию для этого вызова: вы можете изменить поведение метода с помощью

:via => [:post/:put/:get]
0 голосов
/ 18 декабря 2015

В Rails 3 появился новый метод. Вы можете использовать следующее:

get 'admin_login' => "user#admin_login"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...