рубин на рельсах добавление нового маршрута - PullRequest
0 голосов
/ 27 апреля 2010

У меня есть журнал приложения RoR, который похож на приложение книжного магазина, мой logs_controller выполняет все действия по умолчанию: индексировать, показывать, обновлять, создавать, удалять ..

Теперь мне нужно добавить новое действие: toCSV, я определил его в logs_controller и добавить новый маршрут в config / routs:

map.resources :logs, :collection => { :toCSV => :get }.

от irb, я проверил маршруты и вижу уже добавленные новые маршруты:

>> rs = ActionController::Routing::Routes
>> puts rs.routes
GET    /logs/toCSV(.:format)?                   {:controller=>"logs", :action=>"toCSV"}

затем выполнил команду 'rake маршруты' в оболочке, она вернула:

toCSV_logs GET    /logs/toCSV(.:format)         {:controller=>"logs", :action=>"toCSV"}

все, кажется, работает. наконец, в коде моего представления я добавил следующее:

link_to 'Export to CSV', toCSV_logs_path

при доступе к нему в браузере 'http://localhost:3000/logs/toCSV', жаловался: Не удалось найти журнал с идентификатором = toCSV

Я зарегистрировался в скрипте / сервере и увидел это:

ActiveRecord::RecordNotFound (Couldn't find Log with ID=toCSV):
  app/controllers/logs_controller.rb:290:in `show'

кажется, когда я щелкаю эту ссылку, она направляет ее на действие «show» вместо «toCSV», таким образом, он принимает «toCSV» в качестве идентификатора ... кто-нибудь знает, почему это произошло? и исправить это? Спасибо ...

Ответы [ 3 ]

2 голосов
/ 27 апреля 2010
map.resources :logs, :collection => { :toCSV => :get }

Я думаю, что это идеально. вы должны перезапустить ваш сервер каждый раз, когда вы меняете config / rout.rb Это не ответ, хотя это важно.

1 голос
/ 27 апреля 2010

Это может быть обходной путь: Создать именованный ресурс:

map.toCSV 'logs\toCSV', :controller => :logs, :action => :toCSV

Мне очень жаль, я забыл упомянуть главное!

На ваш взгляд это должно быть:

link_to 'Export to CSV', toCSV_path

Кроме того, эти именованные маршруты пригодятся, особенно если вы используете аутентификацию. Например, во время регистрации, вместо того, чтобы направлять пользователя на \user\new, вы можете направить его на \signup. Это более дружелюбно.

Вот так !!

Это проще и работает. Ура! :)

0 голосов
/ 27 апреля 2010

Удалите строку map.resources из Routes.rb, а затем запустите Rake Routes. Если вы видите маршрут / logs /: id, это, вероятно, тот маршрут, который следует удалить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...