Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails添加新路由_Ruby On Rails - Fatal编程技术网

Ruby on rails RubyonRails添加新路由

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中,我检查了路线,发现已经添加

我有一个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'
似乎当我点击该链接时,它会将其指向动作“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,则在更改路由后不需要重新启动服务器。如果在开发环境中运行,则不需要重新启动服务器