【发布时间】:2011-02-12 14:19:18
【问题描述】:
我有一个 RoR 应用程序 Log,它类似于书店应用程序,我的 logs_controller 具有所有默认操作:索引、显示、更新、创建、删除..
现在我需要添加新操作:toCSV,我在 logs_controller 中定义它,并在 config/routes 中添加新路由:
map.resources :logs, :collection => { :toCSV => :get }.
来自 irb,我检查了路线并看到已经添加的新路线:
>> rs = ActionController::Routing::Routes >> 放置 rs.routes 获取 /logs/toCSV(.:format)? {:controller=>"logs", :action=>"toCSV"}然后在 shell 中运行“rake routes”命令,它返回:
toCSV_logs GET /logs/toCSV(.:format) {:controller=>"logs", :action=>"toCSV"}似乎一切正常。最后在我的视图代码中,我添加了以下内容:
link_to '导出到 CSV', toCSV_logs_path
在浏览器'http://localhost:3000/logs/toCSV'中访问它时,它抱怨: 找不到 ID=toCSV 的日志
我检查了脚本/服务器,看到了这个:
ActiveRecord::RecordNotFound(找不到 ID=toCSV 的日志): app/controllers/logs_controller.rb:290:in `show'似乎当我单击该链接时,它会将其定向到操作“显示”而不是“toCSV”,因此它将“toCSV”作为一个 ID...有人知道为什么会发生这种情况吗?并修复它?谢谢...
【问题讨论】:
-
什么轨道版本?并在控制器中显示您的 toCSV 方法
-
你可能有类似这样的日志 GET /logs/:id(.:format) {:controller => "logs, :action", :action=>"show"}
标签: ruby-on-rails