我正在做一个项目,用户可以通过一个简单的表单上传视频,另外还可以通过 FTP 上传到某个目录,然后只需从 FTP 目录中选择文件,而不是通过表单上传。
我得到了以下非常标准的 a 设置videos_controller
:
# routes.rb
resources :videos
# new.html.rb
form_for(@video) do |f|
...
end
控制器中的 restful 操作都正常工作,只是标准行为。上传有效,这不是问题。问题是如果我执行以下操作:
# routes.rb
resources :videos do
member do
post :from_ftp
end
end
# new.html.rb
form_for(@video, :url => from_ftp_video_url) do |f|
...
end
我收到错误:No route matches {:action=>"from_ftp", :controller=>"videos"}
,因为生成的路线如下所示:
from_ftp_video POST /videos/:id/from_ftp(.:format) videos#from_ftp
这似乎是对的,因为它是会员路线。但我不需要:id
URL 的一部分,因为我正在创建一个新的 Video 对象,不是通过表单,而是通过使用 FTP 目录中的文件......所以它基本上是另一个create
动作,这就是为什么我会喜欢将其作为 POST 请求...
那么我该如何以最好的方式解决这个问题呢?