簡體   English   中英

Rails找不到我的路線,但是它存在!

[英]Rails can't find my route but it exists!

好的,我有一些事件,我想通過其他操作來發布/取消發布(非RESTful),我在此觀看了瑞安·貝茨的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

這在我的/views/admin/index.html.erb文件中不起作用:

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

因為它聲稱該路徑不存在!

我希望它由於NoMethodError而無法正常工作。 我認為您的意思是在publish_admin_event_path編寫publish_admin_event_path而不是publish_admin_event 然后它應該工作。

而且這也不會:

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

如果您執行:controller => "/admin/event_services" (如果您已經在admin名稱空間中,則沒有必要),這將起作用,並且正如您在注釋中所指出的,將:id => event移動到第一個哈希。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM