2013-03-27 4 views
0

내 응용 프로그램은 티켓과 call_logs를 사용합니다. 티켓을 여러 call_logs 가질 수 있도록 서로 중첩 된이 있습니다. [GET] "/ call_logs"로 오류가 발생했습니다. 여기에 누락 된 내용을 모르겠습니다. 나는 내가이 생각레일 3 경로 일치 오류 없음

class CallLogsController < ApplicationController 

    before_filter :get_ticket 

    # GET /call_logs 
    # GET /call_logs.json 
    def index 
    @call_logs = @ticket.call_logs.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @call_logs } 
    end 


    # GET /call_logs/1 
    # GET /call_logs/1.json 
    def show 
     @call_log = @ticket.call_logs.find(params[:id]) 

     respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @call_log } 
     end 
    end 

    # GET /call_logs/new 
    # GET /call_logs/new.json 
    def new 
     @call_log = @ticket.call_logs.build 

     respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @call_log } 
     end 
    end 

    # GET /call_logs/1/edit 
    def edit 
     @call_log = @ticket.call_logs.find(params[:id]) 
    end 

    # POST /call_logs 
    # POST /call_logs.json 
    def create 
     @call_log = CallLog.new(params[:call_log]) 

     respond_to do |format| 
     if @call_log.save 
      format.html { redirect_to ticket_call_logs_url(@ticket), notice: 'Call log was successfully created.' } 
      format.json { render json: @call_log, status: :created, location: @call_log } 
     else 
      format.html { render action: "new" } 
      format.json { render json: @call_log.errors, status: :unprocessable_entity } 
     end 
     end 
    end 

    # PUT /call_logs/1 
    # PUT /call_logs/1.json 
    def update 
     @call_log = @ticket.call_logs.find(params[:id]) 

     respond_to do |format| 
     if @call_log.update_attributes(params[:call_log]) 
      format.html { redirect_to ticket_call_logs_url(@ticket), notice: 'Call log was successfully updated.' } 
      format.json { head :no_content } 
     else 
      format.html { render action: "edit" } 
      format.json { render json: @call_log.errors, status: :unprocessable_entity } 
     end 
     end 
    end 

    # DELETE /call_logs/1 
    # DELETE /call_logs/1.json 
    def destroy 
     @call_log = @ticket.call_log.find(params[:id]) 
     @call_log.destroy 

     respond_to do |format| 
     format.html { redirect_to ticket_call_logs_path(@call_log)} 
     format.json { head :no_content } 
     end 
    end 
    end 
end 

    private 
    def get_ticket 
     @ticket = Ticket.find(params[:ticket_id]) 
    end 

:

ticket_call_logs  GET /tickets/:ticket_id/call_logs(.:format)   call_logs#index 
        POST /tickets/:ticket_id/call_logs(.:format)   call_logs#create 
new_ticket_call_log GET /tickets/:ticket_id/call_logs/new(.:format)  call_logs#new 
edit_ticket_call_log GET /tickets/:ticket_id/call_logs/:id/edit(.:format) call_logs#edit 
    ticket_call_log GET /tickets/:ticket_id/call_logs/:id(.:format)  call_logs#show 
        PUT /tickets/:ticket_id/call_logs/:id(.:format)  call_logs#update 
        DELETE /tickets/:ticket_id/call_logs/:id(.:format)  call_logs#destroy 
      tickets GET /tickets(.:format)        tickets#index 
        POST /tickets(.:format)        tickets#create 
      new_ticket GET /tickets/new(.:format)       tickets#new 
     edit_ticket GET /tickets/:id/edit(.:format)      tickets#edit 
       ticket GET /tickets/:id(.:format)       tickets#show 
        PUT /tickets/:id(.:format)       tickets#update 
        DELETE /tickets/:id(.:format)       tickets#destroy 

call_logs 컨트롤러 :
내 경로가

resources :tickets do 
    resources :call_logs 
    end 

레이크 노선 routes.rb 에 중첩해야합니까 내 URL 경로에 오류가 있습니다. call_log 페이지로 안내하는 암탉,하지만 그것을 찾을 수 없습니다. 조언이나 팁은 내가 멍청이이기 때문에 높이 평가 될 것입니다. 감사합니다.

답변

0

rake routes의 출력에서 ​​알 수 있듯이/call_logs와 일치하는 경로가 없습니다. 이것은 중첩 된 리소스 경로이기 때문에 티켓과 티켓 ID를 앞에 추가해야합니다 : /tickets/<id>/call_logs.

+0

해당 URL로 전달할 때 여전히 라우팅 오류가 발생합니다. – Loooz

+0

을 유효한 티켓 ID로 바꾸시겠습니까? – davidrac

+0

예, 이제 오류가 발생했습니다 : # 에 대한 정의되지 않은 메소드'call_logs '. – Loooz

0

routes.rb에서 변경을 수행했지만 모델에서 관계를 유지하지 않은 것처럼 보입니다. 레이크 루트가 말하듯이 ticket_call_logs GET /tickets/:ticket_id/call_logs(.:format)

/ticket/id/call_logs에서 액세스 할 수 있어야합니다. 이제 "id"는 티켓 ID입니다. 그러면 해당 ticket_id에 대한 모든 통화 로그가 나열됩니다.

관련 문제