Rails 3路由中的Bug?
问题描述:
我已经在我的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"}`
我在机智对这一一端。任何帮助?
答
edit_user_project_path
预计参数:你@user
和你@project
:
<%= link_to image_tag('img_blank.png'), edit_user_project_path(@user, @project), :class => "btn_edit_project" %>
是的,这解决了这一问题。有趣的是,我有这段代码工作了3周,从未看过这个错误。 route.rb文件中的新资源声明是否有可能使参数包含必需? – Matteo 2013-02-11 21:39:45
好吧,现在当我去实际点击按钮时,我得到了一个'NoMethodError in ProjectsController#edit',输出如下: '{“user_id”=>“1”, “id”=>“#“} 我不明白为什么Rails会返回对ActiveRecord的引用而不是项目ID。 –
Matteo
2013-02-11 22:08:45
您可以尝试'@ product.id'作为参数。尽管使用你的@project = Project.find ...代码,它不应该为'@project'分配一个ActiveRecord :: Relation - 你是否改变了你的控制器代码? – 2013-02-12 01:23:22