2014-12-11 2 views
0

링크를 클릭 할 때 모델의 열 값을 증가시키고 속성에 정의되지 않은 메소드 오류가 계속 발생합니다. 내가 경로모델 속성을 늘리려고 시도 중 - 모델 속성에서 정의되지 않은 메소드

match '/adviser' => 'visitors#inc_adviser' 

class VisitorsController < ApplicationController 

    def inc_adviser 

    self.adviser = self.adviser + 1 
    self.save 
    redirect_to root_path 

    end 
end 

잘못

모델을하고 있어요

보기

<%= link_to 'Adviser', '/adviser', method: :post %> 

사람은 문제가 무엇인지 제시 할 수 있습니까?

덕분에 그 맥락에서

답변

0

self는 컨트롤러 인스턴스가 아니라 당신이 될 것으로 기대하는 것 모델 인스턴스입니다. 당신은 어디에서 모델 인스턴스를받을 수 있도록에서 카운터를 증가해야합니다, 물론의

def inc_adviser 
    # Something like this, don't have enough information to be more specific. 
    model = WhateverModel.find(params[:id]) 
    model.adviser = model.adviser + 1 
    model.save 
    redirect_to root_path 
end 

, 대신 increment_counter를 사용해야 있도록 조건을 경주 제목 :

def inc_adviser 
    WhateverModel.increment_counter(:adviser, params[:id]) 
    redirect_to root_path 
end 
+0

참으로 내가했습니다 그 질문이 얼마나 어리석은 지 깨달았고 첫 번째 제안과 비슷한 것을했습니다. 나는 저에게 최선의 노력을 다할 것입니다. 왜냐하면 제가하려는 것은 aperson에게 상자를 체크 한 다음 칼럼이 사실이되게하는 것입니다. 덕분에 – Robbo

+0

열이 사실이되게하려면'model.adviser = true'라고 말하고'adviser' 열을 부울 유형으로 정의해야합니다. 일부 데이터베이스는 원시 부울을 가지고 있습니다. 일부는 혼동을 피하기 위해 C 스타일의 0과 1을 사용합니다. –

+0

다시 한 번 합의하고 다시 한 번 감사드립니다! – Robbo

관련 문제