0
NoMethodError in ProjectsController#edit
undefined method `projects' for
#<User:0x28356d8>`app/controllers/projects_controller.rb:154:in `correct_user'
】這個params是:{"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#編輯方法部分:
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="https://stackoverflow.com/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
此問題不斷以不同形式呈現,但從不退出得到解決。有任何想法嗎?
您是否聲明瞭用戶和項目之間的關聯?像你的用戶模型中的'has_many:projects'? – jvnill 2013-02-12 00:53:34
@jvnill - 是的。用戶模型具有'has_one:project'和Project model具有'belongs_to:user'。 – Matteo 2013-02-12 01:04:34
這就是錯誤所在。當它只有一個項目時使用'current_user.projects'。 – jvnill 2013-02-12 01:05:55