gpt4 book ai didi

ruby-on-rails - Rails 3.1 路由——集合不工作

转载 作者:太空宇宙 更新时间:2023-11-03 17:38:25 26 4
gpt4 key购买 nike

我最近升级到 Rails 3.1(从 3.0),出于某种原因我的路线之一不再有效。我有一个发布 csv 文件的表单,并由项目 Controller 处理。路线看起来像:

  resources :items do 
member do
post 'receive'
post 'show'
end

collection do
post 'csv_import'
get 'transactions'
get 'template'
end
end

这是我在日志中看到的——看起来它发布了正确的操作。

Started POST "/items/csv_import" for 127.0.0.1 at Tue May 08 11:09:52 -0400 2012
Processing by ItemsController#show as HTML

但它正在被 show Action 处理:

ActiveRecord::RecordNotFound in ItemsController#show

Couldn't find Item with id=csv_import

我这辈子都看不出我做错了什么。

最佳答案

您的 post 'show' 行干扰了这一点,因为当您发布到 /items/csv_import 时,rails 认为您的意思是 items/csv_import/show ,其中 csv_import 是您要导入的项目的 ID。如果你运行 rake routes,你会看到这样的部分:

            item POST   /items/:id(.:format)        items#show
csv_import_items POST /items/csv_import(.:format) items#csv_import

第一个项目正在将您的帖子与 /items/csv_import 相匹配,它甚至从未命中第二个。

您可以将 member do ... end block 移动到您的 collection do ... end block 之后,它应该可以正常工作。

但是,我只建议摆脱 post 'show' 并将该方法重命名为更好的方法,因为它无论如何都违反标准的 rails/rest 约定。

关于ruby-on-rails - Rails 3.1 路由——集合不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10501477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com