2013-03-27 80 views
0

我的應用程序使用票據和call_logs。我把它們嵌套在一起,這樣門票可以有很多call_logs。 我得到錯誤與[GET]「/ call_logs」 我不知道我在這裏失蹤。
我有嵌套在我的路線的routes.rb導軌3無路線匹配錯誤

resources :tickets do 
    resources :call_logs 
    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控制器

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 

我相信我有一個錯誤在我的網址路徑w母雞直接進入call_log頁面,但我似乎無法找到它。任何意見或提示將不勝感激,因爲我是一個小白菜。 謝謝。

回答

0

正如您從rake routes的輸出中看到的,您沒有匹配/ call_logs的路由。由於這是一個嵌套的資源路由,因此您必須預先安排票證和票證編號:/tickets/<id>/call_logs

+0

指向該網址時,我仍然收到路由錯誤。 – Loooz 2013-03-27 16:31:59

+0

您是否用有效的機票ID替換? – davidrac 2013-03-27 16:55:12

+0

是的,現在我得到錯誤:#的未定義方法'call_logs'。 – Loooz 2013-03-27 17:10:33

0

看起來你已經在routes.rb中做了更改,但沒有在Models中保持關係。 as rake routes says ticket_call_logs GET /tickets/:ticket_id/call_logs((::format)

應該可以通過/ ticket/id/call_logs訪問,現在這裏的「id」是ticket id。這將列出該特定ticket_id的所有通話記錄。