우선 저를 도와 주셔서 감사합니다.
나는 프로젝트 도구에서 일하고 있는데 거기에서 프로젝트 모델이 많이 있습니다. project_tasks는 프로젝트에 속합니다.
프로젝트 작업에 대한 완료 작업으로 표시하려고하는데 패치 작업에서 project_task ID를 가져올 수없는 것 같습니다.
내 경로는 다음과 같습니다. (나도 프로젝트에 대한 완전한 조치가 있지만 잘 작동합니다)
resources :projects do
resources :project_tasks do
member do
patch :complete
end
end
member do
patch :complete
end
end
레이크 루트
complete_project_project_task PATCH /projects/:project_id/project_tasks/:id/complete(.:format) project_tasks#complete
project_project_tasks GET /projects/:project_id/project_tasks(.:format) project_tasks#index
POST /projects/:project_id/project_tasks(.:format) project_tasks#create
new_project_project_task GET /projects/:project_id/project_tasks/new(.:format) project_tasks#new
edit_project_project_task GET /projects/:project_id/project_tasks/:id/edit(.:format) project_tasks#edit
project_project_task GET /projects/:project_id/project_tasks/:id(.:format) project_tasks#show
PATCH /projects/:project_id/project_tasks/:id(.:format) project_tasks#update
PUT /projects/:project_id/project_tasks/:id(.:format) project_tasks#update
DELETE /projects/:project_id/project_tasks/:id(.:format) project_tasks#destroy
complete_project PATCH /projects/:id/complete(.:format) projects#complete
projects GET /projects(.:format) projects#index
POST /projects(.:format) projects#create
new_project GET /projects/new(.:format) projects#new
edit_project GET /projects/:id/edit(.:format) projects#edit
project GET /projects/:id(.:format) projects#show
PATCH /projects/:id(.:format) projects#update
PUT /projects/:id(.:format) projects#update
DELETE /projects/:id(.:format) projects#destroy
보기:
<%= link_to '', complete_project_project_task_path(@project, project_task.id), class: "glyphicon glyphicon-ok", id: "complete-#{project_task.id}", method: :patch %>
그리고 컨트롤러 액션 :
def complete
@project = Project.find(params[:project_id])
@project_task = project.project_task.find(params[:id])
if @project_task.completed_at.blank?
@project_task.update_attribute(:completed_at, Time.now)
flash[:success] = 'Task Completed!'
redirect_to root_path
else
@project_task.update_attribute(:completed_at, '')
flash[:info] = 'Task Updated!'
redirect_to root_path
end
end
내가 받고있는 오류는 다음과 같습니다. {: action => "complete", : controller => "project_tasks", : id => nil, : project_id => "26"} 누락 된 필수 키와 일치하는 경로 없음 : [: id]
link_to에서 2 개의 인수, @project (프로젝트 ID를 얻기 위해) 및 project_task.id를 추가합니다. 프로젝트 ID가 정확하지만 project_task.id가 아닌 것 같습니다. 컨트롤러 작업을 @project_task = ProjectTask.find (params [: id])로 변경하려고했지만 운이 없었습니다. (나는 또한 link_to에서 다른 인수로 몇 가지를 시도했습니다.) 나는 그것을 검색하는 방법을 잘 모르겠지만, 당신 중 한 명이 나를 올바른 방향으로 안내 할 수 있기를 바랍니다.
미리 감사드립니다!
좋아요, 문제가 뭔지 알아 냈어요.
충돌을 일으킨 @project_task 인스턴스의 두 가지 버전이 있습니다. (양식과 완전한 행동 모두에서) 그래서 나는 추가했습니다
<% @project.project_tasks.select(&:persisted?).each do |project_task| %>
그리고 수정 사항은 & : persisted? 저장된 개체 만 표시합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다