2012-07-19 4 views
1

사용자가 데이터베이스에 데이터를 입력 할 수있는 웹 사이트를 만들고 다른 페이지에서 데이터베이스를 검색 할 수 있습니다. 지금은 검색을 아직 구현하지 않았으므로 새 항목 양식을 만드는 것이 좋습니다. 표를 표시하는 검색 페이지도 마찬가지입니다.Ruby on Rails : 정의되지 않은 메소드, 컨트롤러 메소드의 오류

컨트롤러 :

def search 
@project_search = Project.order(sort_column + " " + sort_direction) 
end 

    private 

    def sort_column 
    Project.column_names.include?(params[:sort]) ? params[:sort] : "project_name" 
    end 

    def sort_direction 
    %w[asc desc].include?(params[:direction]) ? params[:direction] : "asc" 
    end 


def create 
@project = Project.new(params[:project]) 


@project.client = params[:new_client] unless params[:new_client].blank? 
@project.exception_pm = params[:new_exception_pm] unless params[:new_exception_pm].blank? 
@project.project_owner = params[:new_project_owner] unless params[:new_project_owner].blank? 
@project.role = params[:new_role] unless params[:new_role].blank? 
@project.industry = params[:new_industry] unless params[:new_industry].blank? 
@project.business_div = params[:new_business_div] unless params[:new_business_div].blank? 

respond_to do |format| 
    if @project.save 
    format.html { redirect_to @project, notice: 'Project was successfully created.' } 
    format.json { render json: @project, status: :created, location: @project } 
    else 
    format.html { render action: "new" } 
    format.json { render json: @project.errors, status: :unprocessable_entity } 
    end 
end 
end 

내가 검색 방법을 주석

, 내 입력 양식은 다음 작동하지만, 그들은 모두있을 때, 나는이 오류가 발생합니다.

정의되지 않은 메서드 NilClass에 대한`MODEL_NAME ': 클래스

추출 소스 라인 1에서 내 양식보기에서 : 나는 그냥 작은 문제이지만, 내가 볼 수 없습니다 생각

<%= form_for(@project) do |f| %> 

그것을 해결하기 위해. 레일에서 루비를 처음 접해서 쉽게 갈 수 있습니다 :).

감사합니다.

답변

2

아니요 100 % 확신 할 수는 없지만 그 이유는 여기가 private 인 이유 때문입니다. Ruby에서는 그 호출 이후의 모든 것이 비공개가됩니다. Rails는 자신의 생성 및 사용 정의를 무시할 수 있습니다. "검색 방법을 주석으로 처리"한다고 말하면 private을 주석 처리 할 가능성이 있습니까?

+0

그게 문제였습니다. 나는 '사적'을 삭제했다. 나는 정말로 그것을 필요로 했는가? 당신의 도움을 많이 주셔서 고마워요. – Jazz

+0

당신은 아마 그것을 필요로 할 것입니다, 그것은 단지 사적인 것으로 간주되기 때문에 모든 것이 끝나야 만합니다. – Hugo

+1

@ JamesMcL13 나는 개인 (예 : sort_column) 아래에 컨트롤러 도우미 메서드를 넣을 것이다. 레일스와 루비에 대한 더 많은 경험을 얻으면서, 무엇이 프라이빗이되어야하는지, 메소드가 어떻게되어야하는지 등을 알아낼 것입니다. 나는 당신이 확실히 올바른 길에 있다고 생각하며, 경험을 통해 이러한 것들을 파악할 것입니다. –

관련 문제