0

我正进入(状态

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

这个问题不断以不同的形式浮出水面,但从未退出得到解决。有任何想法吗?

4

1 回答 1

0

感谢@jvnill 的回答...

用户和项目之间的关联是一对一的。用户has_one :project和项目belongs_to :user。正如@jvnill 指出的那样,没有必要限定查找,.find_by_id(params[:id])因为 user_id 只会在项目表中出现一次,Rails 可以找到它。

于 2013-02-12T01:47:23.810 回答