2012-10-24 49 views
0

我不斷收到這些錯誤對於沒有路由的行動 '編輯'沒有路由匹配{:控制器=> 「神器」,:動作=> 「編輯」}

控制器匹配:

def remove_artifact_from_collection 

... do my stuff .. 

render(:action=>:show) 
end 

視圖:線在其上的錯誤

<p><%= link_to 'Edit Evidence Item', edit_artifact_path, :class => 'edit_button' %></p> 

路線:

resources :artifacts do 
    collection do 
    get 'remove_artifact_from_collection' 
    end 
end 

束EXEC耙路線

remove_artifact_from_collection_artifacts GET /artifacts/remove_artifact_from_collection(.:format)  {:controller=>"artifacts", :action=>"remove_artifact_from_collection"} 
           artifacts GET /artifacts(.:format)          {:controller=>"artifacts", :action=>"index"} 
              POST /artifacts(.:format)          {:controller=>"artifacts", :action=>"create"} 
           new_artifact GET /artifacts/new(.:format)         {:controller=>"artifacts", :action=>"new"} 
          edit_artifact GET /artifacts/:id/edit(.:format)        {:controller=>"artifacts", :action=>"edit"} 
            artifact GET /artifacts/:id(.:format)         {:controller=>"artifacts", :action=>"show"} 
              PUT /artifacts/:id(.:format)         {:controller=>"artifacts", :action=>"update"} 
              DELETE /artifacts/:id(.:format)         {:controller=>"artifacts", :action=>"destroy"} 
+0

你的耙路線顯示什麼? – DickieBoy

回答

4

那是因爲你沒有提供的神器/ id來edit_artifact_path。假設你的神器是在@artifact實例變量,你應該使用:

link_to 'Edit Evidence Item', edit_artifact_path(@artifact), ...

您還可以使用:

link_to 'Edit Evidence Item', [:edit, @artifact], ...

+0

然後,當我轉到http://127.0.0.1:3000/artifacts/8220時它是如何工作的 – user1570144

+0

如果您使用工件模型的腳手架,則show view應通過爲'edit_artifact_path'提供' artifact'。 – James

+0

它通過傳遞@artifact來編輯,就像你和Manjunath建議的一樣。所以我正在使用它。謝謝 – user1570144

1
link_to "Edit Artifact", edit_artifact_path(@artifact) 

你沒有在對象傳遞。

edit_artifact GET /artifacts/:id/edit(.:format) 

從你可以看到的路徑中,你需要指定id。所以傳入一個包含工件對象的變量。

相關問題