2010-12-15 6 views
1

Я только что переехал с помощью Rails 3.0.3 на моем Mac OS X.Настройка routes.rb для Rails 3.0

Когда я попытался генерировать контроллеры и представления следующим образом:

$rails generate controller testing 

он создал контроллер в соответствующем месте. я создал метод/действие в том же контроллере называется greet и когда я попытался получить доступ к этому через браузер по адресу:

http://localhost:3000/testing/greet 

Он дал мне ошибку говоря:

Routing Error 

No route matches "/testing/greet" 

Но если я добавить следующая строка в моем routes.rb файле:

get 'testing#greet' 

он работает отлично, Но, я не могу добавить эту строку для каждого и каждого метода в моем приложении.

Пожалуйста, помогите мне в решении этой проблемы.

Спасибо!

ответ

2

Он не слишком усложняет ситуацию.

Предполагая, что тестирование resoucedful, в маршрутах:

resources :testings do 
    # for individual /testing/1/greet 
    member do 
    get 'greet' 
    end 

    # on the collection 
    collection do 
    get 'greet' 
    end 
end 
+0

Простой ответ на ваш вопрос: «каждый заданный маршрут нужен» – sethvargo

+0

Спасибо, Сет за ваш ответ, но я верю, что если я буду определять каждый маршрут в файле routes.rb, то я буду усложнять вещи, и файл routes.rb не будет выглядеть хорошо. в любом случае, спасибо за ваш ответ. Я подумал об этом и вскоре отправлю ответ. –

+0

Я оглядываюсь назад на этот вопрос и чувствую себя таким наивным :) Fast-forward 2 года - я Pro на Rails и Ruby :) –

0

Вы по-прежнему усложняете маршрутизацию. Пожалуйста, прочитайте Routing Guide для просветления.

+1

Прошу прощения, если я слишком усложнил ситуацию, но ответ требует, чтобы эта простая строка в файле 'routes.rb' работала:' match ': controller /: action'' –

-1

Если вы едете из Rails 2.x в Rails 3.0, файл routes.rb, вероятно, отсутствует эту строку:

match ':controller/:action' 

В Rails 2.x Данная строка была:

map.connect ':controller/:action' 

Из-за изменения API маршрутизации и int Для продолжения операции «Отправка действия» вам нужно добавить первую строку в файле routes.rb для автоматического сопоставления каждого метода.

PS: Пожалуйста, помните, что если вам нужно перезаписать вышеуказанную маршрутизацию, вам нужно объявить команды маршрутизации над этой строкой, потому что приоритет в Rails Routing принимает нижний подход.

Спасибо!

+1

Этот маршрут все-таки неудобен и считается устаревшим. Пути маршрута REST, как описано в http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default, - это путь. –

+0

Привет, Брайан, это может быть так. Но, поскольку я только что переключился на Rails 3 из Rails 2, я уже отсутствовал, что имел в Rails 2.Я все еще просматриваю все руководства и документацию API, чтобы подтвердить стандарты Rails 3. Но пока это именно то, что я искал для проверки Rails 3. Теперь, поскольку я знаю, что он устарел, я рассмотрю, какая полированная версия была введена в Rails 3 и начнет использовать ее в Production. Еще раз спасибо! –

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