我正在
NoMethodError in ProjectsController#edit
undefined method `projects' for
#<User:0x28356d8>`app/controllers/projects_controller.rb:154:in `correct_user'
参数是:{"user_id"=>"1", "id"=>"1"}
projects_controller
中的违规行是:@project = current_user.projects.find_by_id(params[:id])
作为
def correct_user
@project = current_user.projects.find_by_id(params[:id])
redirect_to show_user_path if @project.nil?
end
我的projects_controller#edit方法是:
def edit
@project = Project.find(params[:id])
@project.current_step = @project.first_step
@user = current_user
end
这是由一个按钮
触发的<%= link_to image_tag('img_blank.png'), edit_user_project_path(current_user), :class => "btn_edit_project" %>
将HTML输出显示为:
<a class="btn_edit_project" href="/users/1/projects/1/edit"><img src="/assets/img_blank.png" alt="Img_blank"></a>
我的路线文件包含以下内容:
resources :users do
resources :projects
end
和rake routes
显示:
edit_user_project GET /users/:user_id/projects/:id/edit(.:format) projects#edit
此问题会以不同的形式出现,但永远不会退出解决。有什么想法吗?
答案 0 :(得分:0)
感谢@jvnill的答案......
用户与项目之间的关联是1到1.用户has_one :project
和项目belongs_to :user
。正如@jvnill指出的那样,没有必要用.find_by_id(params[:id])
来限定查找,因为user_id只会在projects表中一次,而Rails可以找到它。