2010-11-18 4 views
1

Я получаю эту ошибку для URL http://localhost:3000/dashboard/RoR - индексный метод в контроллере

Routing Error No route matches "/dashboard"

http://localhost:3000/dashboard/index но работает правильный

Как я могу сделать все приведенные ниже URL-адресов работает и показывает тот же вид views/dashboard/index.html.erb

http://localhost:3000 
http://localhost:3000/ 
http://localhost:3000/dashboard 
http://localhost:3000/dashboard/ 
http://localhost:3000/dashboard/index 

Мои маршруты файл

Mytest::Application.routes.draw do 
    get "dashboard/index" 
    root :to => "dashboard#index" 
end 

Мой файл контроллер

class DashboardController < ApplicationController 
    def index 

    end 

end 

ответ

5
Mytest::Application.routes.draw do 
    match "/dashboard", :to => 'dashboard#index' 
    root :to => "dashboard#index" 
end 

Вы также можете добавить общие маршруты из /:controller/:action/:id(.:format) стиля.

+0

Когда я добавил 'map.connect«: контроллер /: действие /: id'' я получил следующее сообщение об ошибке при запуске сервера rails с сервером rails /config/routes.rb:3:in 'block in ': undefined local variable or method 'map' for # (NameError) from E:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.0/lib/action_dis patch/routing/route_set.rb:233:in 'instance_exec' from E:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.0/lib/action_dis patch/routing/route_set.rb:233:in 'draw'

+1

это потому, что вы использовали старый (rails 2.x routing api). Нет никакой переменной блока. Просто добавьте эту строку в блок: 'match ': controller /: action /: id (.: Format)''. Более подробную информацию можно найти в руководствах по rails: http://guides.rubyonrails.org/routing.html – Eimantas

0
match '/dashboard', :controller => 'dashboard', :action => 'index' 

Возможно, возможно? Я не тестировал это.

1

Я бы

map.root :controller => "dashboard", :action => "index" 
    map.dashboard "/dashboard", :controller => "dashboard", :action => "index" 
    map.connect "/dashboard/:action", :controller => "dashboard", :action => "index" 
    #standard routes 
    map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 

Или вы могли бы сделать его более стандартный

#special case 
    map.root :controller => "dashboard", :action => "index" 

    #general case 
    map.connect ":controller", :action => "index" 
    map.connect ":controller/:action" 

    #standard routes 
    map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 
+1

Этот API не является рельсовым. – Eimantas

+0

Я не использовал рельсы 3, но почему бы и нет? Разве rails3 больше не следуют спокойному стилю? Или сделали ошибку, которая не следует за REST? –

Смежные вопросы