У меня есть журнал приложения 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» в качестве идентификатора ... кто-нибудь знает, почему это произошло? и исправить это? Спасибо ...