2013-04-27 2 views
3

내 응용 프로그램에서 사용자가 프로젝트 제안서를 제출할 수있는 링크를 만들려고합니다. 사용자가 검토를 위해 제출할 준비가되면 링크를 클릭하면 부울 "제출 검토"가 true로 표시됩니다.Rails - link_to를 사용하여 데이터베이스의 부울을 변경하는 방법?

나는이 게시물을 가이드로 따라 갔다 : Rails 3 how do I use link_to to change the value of a boolean in the db?. 다음 URL로

는 지금, 부울이 false에서 true로 변경하지 않으며, 또한 리디렉션됩니다 : http://localhost:3000/projects?submitreview=false

어떤 도움을 주시면 감사하겠습니다, 감사합니다!

* 업데이트 * 제안 사항대로 아래 코드를 업데이트했으며 링크를 클릭하면 성공적으로 부울을 업데이트했습니다. 링크가 포함 된이 "양식"은 새 프로젝트 양식에도 렌더링됩니다. 그래서 내 문제는 지금 새 프로젝트 <%= link_to 'Start your project', new_project_path %>을 클릭하면 다음과 같은 새로운 오류가 발생합니다. 양식에서 submit_view 링크를 삭제하면 오류가 나타나지 않고 new_project가 훌륭하게 렌더링됩니다. 내 생각 엔 new_project가 프로젝트의 ID를 아직 만들지 않았고 def submitreview에 호출이 있다는 것입니다. 이 문제를 해결할 수 있습니까?

Routing Error 
No route matches {:action=>"submitreview", :controller=>"projects", :id=># ... } 

프로젝트/_form.html.erb

<%= link_to "Submit Proposal", submitreview_project_path(@project), method: :put, class: "btn btn-primary" %> 

projects_controller.rb

def submitreview 
    @project = Project.find(params[:id]) 
    @project.update_attributes(submitreview: true) 
    redirect_to project_path(@project) 
end 

routes.rb

레이크 노선

submitreview_project GET /projects/:id/submitreview(.:format)     projects#submitreview 
        PUT /projects/:id/submitreview(.:format)     projects#submitreview 
+0

따옴표 사이에 "true"가 나타나는 이유는 무엇입니까? 그것은 문자열 유형 열입니까? 그렇지 않다면 '사실'이 더 적절할 것 같습니다. – giorgian

+0

따옴표없이 'true'로 업데이트되었지만 링크는 여전히 부울을 true로 업데이트하지 않습니다. – spl

답변

6

이 시도 : rake routes을 실행

또한
def submitreview 
    @project = Project.find(params[:id]) 
    @project.update_attributes(submitreview: true) 
    redirect_to projects_path(submitreview: false) 
end 

는 경로가 PUT 아닌 GET이 있는지 확인.

<%= link_to "Submit Proposal", submitreview_projects_path(@project), method: :put %> 

마지막으로 참고 :

당신은 간단하게 할 수는 link_to뿐만 아니라, 경로가 submitreview_projects라고 할 수 있습니다 당신은 더 나은 가독성을 위해 모든 submitreviewsubmit_review로 변경할 수 있습니다.

+0

그에 따라 def submitreview, link_to 및 rake routes가 업데이트되었습니다. 이 오류로 인해 new_project 경로가이 링크 때문에 렌더링 할 수 없다는 새로운 결과가 있습니다. 위의 업데이트 된 질문을 참조하십시오. 감사. – spl

+0

'submit_review'가 아닌'submitreview' 액션과 일치하는 경로가 없다면 여전히 어딘가에서'submitreview'를 사용하고 있다는 것을 의미합니다. 또한 서버를 다시 시작했는지 확인하십시오. –

관련 문제