2013-03-27 108 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的所有通话记录。