2009-10-02 3 views
0

Я начал изучать Rails, это продолжалось до сих пор.Проблема с маршрутизацией Ruby On Rails

Я использую HAML и иметь это на моем index.haml

= submit_to_remote "submit_btn", "Create", :url => {:controller => "queries", :action => "create"}, :method => "post" 

= submit_to_remote "exe_btn", "Execute", :url => {:controller => "queries", :action => "execute"}, :method => "post" 

Это возвращает мне эту ошибку при попытке запустить его

No route matches {:controller=>"queries", :action=>"execute"} 

Как только я удалил эту строку

= submit_to_remote "exe_btn", "Execute", :url => {:controller => "queries", :action => "execute"}, :method => "post" 

Он работает без проблем.

Кто-нибудь знает, что я делаю неправильно и имею какие-либо советы для меня?

Приветствия

Eef

ответ

4

queries Изменить ресурс в конфигурации/routes.rb

map.resources :queries, :member => { :execute => :post} 

Если у вас нет идентификатора запроса, представленный с формой, то пусть это:

map.resources :queries, :collection => { :execute => :post} 

Перезагрузите сервер.

Это происходит потому, что по умолчанию map.resources дает только 7 маршрутов для ресурса:

индекса, новые, создавать, редактировать, обновлять, удалять и шоу.

Теперь, когда вы хотите новый маршрут под названием execute, вам необходимо расширить маршруты, как описано выше.

+0

Приветствия за быстрый ответ! Сейчас работает отлично. Еще раз спасибо!! – RailsSon

0

Вы создали маршрут в файле config/routes.rb, который соответствует: controller => "query",: action => "execute"?

Я предположил бы, что у вас есть маршрут как:

map.resources queries 

который говорит Rails определить некоторые RESTful маршруты для этой модели. Когда вы пытаетесь ссылаться на другой маршрут, Rails не может его найти и просит.

Вы должны исправить это с помощью:

map.resorces queries, :member => {:execute => :post} 

, который будет затем отобразить его правильно ваши действия.

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