2013-02-11 108 views
0

我已經在我的projects_controller如下:Rails 3路由中的Bug?

resources :users do 
resources :projects 
end 

在我views/users/show.html.erb我:

<%= link_to image_tag('img_blank.png'), edit_user_project_path, :class => "btn_edit_project" %>

rake routes

def edit 
    @project = Project.find(params[:id]) 
    @project.current_step = @project.first_step 
    @user = current_user 
end 
routes.rb

而下面的路線我:

​​

我仍然得到錯誤:

`Routing Error: No route matches {:action=>"edit", :controller=>"projects"}` 

我在機智對這一一端。任何幫助?

回答

2

edit_user_project_path預計參數:你@user和你@project

<%= link_to image_tag('img_blank.png'), edit_user_project_path(@user, @project), :class => "btn_edit_project" %> 
+0

是的,這解決了這一問題。有趣的是,我有這段代碼工作了3周,從未看過這個錯誤。 route.rb文件中的新資源聲明是否有可能使參數包含必需? – Matteo 2013-02-11 21:39:45

+0

好吧,現在當我去實際點擊按鈕時,我得到了一個'NoMethodError in ProjectsController#edit',輸出如下: '{「user_id」=>「1」, 「id」=>「# 「} 我不明白爲什麼Rails會返回對ActiveRecord的引用而不是項目ID。 – Matteo 2013-02-11 22:08:45

+0

您可以嘗試'@ product.id'作爲參數。儘管使用你的@project = Project.find ...代碼,它不應該爲'@project'分配一個ActiveRecord :: Relation - 你是否改變了你的控制器代碼? – 2013-02-12 01:23:22