Ruby on rails RubyonRails添加新路由
我有一个RoR应用程序日志,与书店应用程序类似,我的日志\u控制器具有所有默认操作:索引、显示、更新、创建、删除 现在我需要添加新操作:toCSV,我在logs\u controller中定义了它,并在config/routes中添加新路由,如下所示: map.resources :logs, :collection => { :toCSV => :get }. map.resources:logs,:collection=>{:toCSV=>:get}。 在irb中,我检查了路线,发现已经添加了新路线: >> rs = ActionController::Routing::Routes >> puts rs.routes GET /logs/toCSV(.:format)? {:controller=>"logs", :action=>"toCSV"} >>rs=ActionController::Routing::Routes >>把rs GET/logs/toCSV(:格式)?{:controller=>“logs”,:action=>“toCSV”} 然后在shell中运行“rake routes”命令,返回: toCSV_logs GET /logs/toCSV(.:format) {:controller=>"logs", :action=>"toCSV"} toCSV_logs GET/logs/toCSV(:format){:controller=>“logs”,:action=>“toCSV”} 一切似乎都在运转。最后,在我的视图代码中,我添加了以下内容: link_to 'Export to CSV', toCSV_logs_path 链接到“导出到CSV”,toCSV日志路径 在浏览器“”中访问它时,它抱怨: 找不到ID为toCSV的日志 我签入了脚本/服务器,并看到了以下内容: ActiveRecord::RecordNotFound (Couldn't find Log with ID=toCSV): app/controllers/logs_controller.rb:290:in `show' ActiveRecord::RecordNotFound(找不到ID为toCSV的日志): app/controllers/logs_controller.rb:290:in'show'Ruby on rails RubyonRails添加新路由,ruby-on-rails,Ruby On Rails,我有一个RoR应用程序日志,与书店应用程序类似,我的日志\u控制器具有所有默认操作:索引、显示、更新、创建、删除 现在我需要添加新操作:toCSV,我在logs\u controller中定义了它,并在config/routes中添加新路由,如下所示: map.resources :logs, :collection => { :toCSV => :get }. map.resources:logs,:collection=>{:toCSV=>:get}。 在irb中,我检查了路线,发现已经添加
似乎当我点击该链接时,它会将其指向动作“show”而不是“toCSV”,因此它将“toCSV”作为id…有人知道为什么会发生这种情况吗?要解决它呢?谢谢 从routes.rb中删除map.resources行,然后运行rake routes。如果您看到一个route/logs/:id,则可能应该删除该路由。从routes.rb中删除map.resources行,然后运行rake routes。如果您看到一个route/logs/:id,则可能应该删除该路由
map.resources :logs, :collection => { :toCSV => :get }
我认为这是完美的。每次更改config/routes.rb时都必须重新启动服务器
虽然没有答案,但这很重要
我认为这是完美的。每次更改config/routes.rb时都必须重新启动服务器
虽然没有答案,但这很重要。这可能是一个解决办法:
创建命名资源:
map.toCSV'logs\toCSV',:controller=>:logs,:action=>:toCSV
我真的很抱歉我忘了提要点
你认为应该是:
链接到“导出到CSV”,toCSV路径
此外,这些命名路由也很方便,尤其是在涉及身份验证时。例如,在注册过程中,您可以将用户引导到\user\new
而不是\signup
。它更友好
就这样
它更简单,而且有效。干杯!:) 这可能是一个解决方法:
创建命名资源:
map.toCSV'logs\toCSV',:controller=>:logs,:action=>:toCSV
我真的很抱歉我忘了提要点
你认为应该是:
链接到“导出到CSV”,toCSV路径
此外,这些命名路由也很方便,尤其是在涉及身份验证时。例如,在注册过程中,您可以将用户引导到\user\new
而不是\signup
。它更友好
就这样
它更简单,而且有效。干杯!:) 什么rails版本?并在controllery中显示toCSV方法您可能有类似于log GET/logs/:id(:format){:controller=>“logs,:action”,:action=>“show”}的日志GET/logs/:id(:format){:controller=>“logs,:action=>”show”}什么rails版本?并在controllery中显示toCSV方法您可能有类似于以下的log GET/logs/:id(:format){:controller=>“logs,:action”,:action=>“show”}如果运行webrick,则在更改路由后不需要重新启动服务器。如果在开发环境中运行,则不需要重新启动服务器如果运行webrick,则在更改路由后不需要重新启动服务器。如果在开发环境中运行,则不需要重新启动服务器