2013-02-11 90 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