2010-05-30 33 views
0

好的我有一些事件要發佈/取消發佈,但需要額外的操作(nonRESTful)我觀看了Ryan Bates的railscast:http://railscasts.com/episodes/35-custom-rest-actions,它讓我獲得了大部分的體驗。我認爲這個問題是我的路線是嵌套在一個/admin部分,因此,即使當我運行rake routes,並得到:Rails找不到我的路線,但它存在!

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: 我的路由條目:

<%= link_to 'Publish', publish_admin_event(event), :method => :put %> 

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 
+0

你能張貼你的路線條目嗎? – 2010-05-30 18:43:20

+0

@Andy Gaskell:已發佈,但我可能會接受sepp2k的回答。如果你有任何有用的補充作爲答案,我會upvote你。 – DJTripleThreat 2010-05-30 18:59:24

回答

3

這不是我的/views/admin/index.html.erb文件工作因爲它聲稱路徑不存在!

我寧可期望它不會因爲NoMethodError而工作。我想你的意思是在那裏寫publish_admin_event_path而不只是publish_admin_event。那麼它應該工作。

,所以並不會有這樣的:

<%= link_to 'Publish', {:controller => :event_services, :action => :publish}, {:method => :put, :id => event} %> 

如果你:controller => "/admin/event_services"(但如果你在管理命名空間是已經是沒有必要的),而且,你想通了這將工作在您的評論中,將:id => event移至第一個散列。

+0

第一部分工作!我不知道我忘了'_path'部分!第二部分不起作用。看到我的第二個編輯。 – DJTripleThreat 2010-05-30 18:55:47

+0

確定第二個工作,如果我離開:controller =>:event_services並將我的:id =>事件放入第一個散列。 – DJTripleThreat 2010-05-30 18:57:33

+0

@DJTripleThreat:哎呀,我沒有看到。是的,如果您已經在管理員名稱空間中,event_services將會工作。當您處於頂級命名空間時,「admin/event_services」將起作用。無論你在哪裏,'/ admin/event_services'都可以工作。 – sepp2k 2010-05-30 19:20:30

相關問題