【发布时间】:2012-01-25 10:37:11
【问题描述】:
我正在尝试遵循 this 的示例。 我在控制器中创建了一个动作:
def distribute_resume
Rails.logger.info(distribution_id.to_s)
PartnerNotifier.distribute_resume(distribution_id)
flash[:notice] = "Successfully distributed resume"
redirect_to admin_distributions_workflows_path
end
我在我的 `config/routes.rb' 文件中创建了一个路由:
namespace :admin do
namespace :distributions do
resources :workflows do
collection do
post :edit_multiple
put :update_multiple
post :distribute_resume
end
end
end
end
我还尝试将路由移动到集合块之外的操作,如下所示:
namespace :admin do
namespace :distributions do
resources :workflows do
post :distribute_resume
collection do
post :edit_multiple
put :update_multiple
end
end
end
end
但是在这两种情况下我都会遇到这个错误:
No route matches {:controller=>"admin/distributions/workflows_controller", :distribution_id=>123, :action=>"distribute_resume", :method=>:post}
我太幼稚了,无法弄清楚这一点。
更新:
啊,是的,需要记得经常检查rake routes。我确实看到了:
admin_distributions_workflow_distribute_resume POST /admin/distributions/workflows/:workflow_id/distribute_resume(.:format) {:action=>"distribute_resume", :controller=>"admin/distributions/workflows"}
所以我改变了看法:
<%=link_to "Send this resume to #{distribution.matching_profile.partner.email}",
:controller => "workflows", <-- instead of "workflows_controller"
:action => "distribute_resume",
:distribution_id => distribution.id,
:method => :post%>
但我仍然收到类似的错误消息:
No route matches {:controller=>"admin/distributions/workflows", :distribution_id=>121, :action=>"distribute_resume", :method=>:post}
【问题讨论】:
-
在控制台输入
rake routes会得到什么? -
在 OP 底部添加了更新
标签: ruby-on-rails ruby-on-rails-3 namespaces controller routes