Я получаюNoMethodError в Rails
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
@jvnill - Да. Модель пользователя имеет 'has_one: project', а модель проекта имеет' принадлежит_то: пользователю'. – Matteo
вот где ошибка. вы используете 'current_user.projects', когда у него есть только один проект. – jvnill