[英]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.