好的,我有想要通过额外操作发布/取消发布的事件(非 RESTful) 我在此观看了 Ryan Bates 的 railscast:http ://railscasts.com/episodes/35-custom-rest-actions它让我大部分时间道路。我认为问题在于我的路线嵌套在一个/admin
部分中,因此即使我运行rake routes
并获得:
publish_admin_event PUT /admin/events/:id/publish(.:format) {:controller=>"event_services", :action=>"publish"}
这在我的 /views/admin/index.html.erb 文件中不起作用:
<%= link_to 'Publish', publish_admin_event(event), :method => :put %>
因为它声称路径不存在!这也不会:
<%= link_to 'Publish', {:controller => :event_services, :action => :publish}, {:method => :put, :id => event} %>
并说“ No route matches {:controller=>"event_services", :action=>"publish"}
”
那么什么给了?(而且我已经尝试重新启动我的服务器,所以不是这样。)
编辑: 这确实有效:
<%= link_to 'Publish', "/admin/events/" + event.id.to_s + "/publish", :method => :put %>
但我宁愿不这样做。
编辑#2: 我的路线条目:
map.resource :admin do |admin|
admin.admin '', :controller => :admin, :only => :index
admin.resources :events, :controller => :event_services, :member => {:publish => :put } do |service_event|
# ...
end
end