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に感謝...

ユーザーとプロジェクトの関連付けは 1 対 1 です。ユーザーhas_one :projectとプロジェクトはbelongs_to :user. @jvnill が指摘したように.find_by_id(params[:id])、user_id は projects テーブルに一度だけ存在し、Rails はそれを見つけることができるため、ルックアップを修飾する必要はありません。

于 2013-02-12T01:47:23.810 に答える