繁体   English   中英

定义Rails路线有困难

[英]Having difficulty defining Rails route

我是Rails的新手,正在尝试创建一条新路线来执行操作。

目前,我在路线中定义了以下内容

match 'books/scrape_data' => 'books#scrape_data', :via => :get

和以下动作

def scrape_data
  @books = Book.all
  @books.each do |book|
#    do stuff
  end
  redirect_to :action => 'list'
end

但是,路线似乎使用:id'scrape_data'进入了show动作。

谁能指出我正确的方向?

听起来您还必须具有在您的问题中列出的路由之前出现的路由定义,例如resources :books 由于路由是自上而下解析的,books#show路由正在拦截您的路由,并将scrape_data到ID中。 运行bundle exec rake routes以查看所定义路由的顺序。

最简单的解决方法是将您的路线移至resources :books上方。 但实际上,摆脱自定义路由并将其添加到资源块中实际上是更正确的:

resources :books do
  get 'scrape_data', on: :collection
end

此后,再执行另一个bundle exec rake routes ,看看这是否是您想要的。

请原谅“答案”,但我没有评论代表。

我去路由相关的所有事情的资源是从外部路由

运行bundle exec rake routes以查看您的路由及其嵌套方式。 然后,您将看到您的参数是否匹配(嵌套路线的常见错误)。

您还可以通过以下方法查看所有路线:

http://localhost:3000/rails/info/routes 

这非常有用,而不必杀死服务器并使用控制台。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM