Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Rails 3无路由匹配错误_Ruby On Rails 3_Routes - Fatal编程技术网

Ruby on rails 3 Rails 3无路由匹配错误

Ruby on rails 3 Rails 3无路由匹配错误,ruby-on-rails-3,routes,Ruby On Rails 3,Routes,我的应用程序使用票据和通话记录。我把它们嵌套在一起,这样票证就可以有很多通话记录。 我在[GET]“/call\u logs”中遇到错误 我不知道我错过了什么 我的路由嵌套在routes.rb中 resources :tickets do resources :call_logs end 耙路径: ticket_call_logs GET /tickets/:ticket_id/call_logs(.:format) call_logs#inde

我的应用程序使用票据和通话记录。我把它们嵌套在一起,这样票证就可以有很多通话记录。 我在[GET]“/call\u logs”中遇到错误 我不知道我错过了什么
我的路由嵌套在routes.rb中

  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
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
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
class CallLogsController
我相信我的url路径在指向call_log页面时出错,但我似乎找不到它。任何建议或提示将不胜感激,因为我是一个noob。
谢谢。

rake routes
的输出可以看出,您没有与/call\u日志匹配的路由。由于这是一个嵌套的资源路由,您必须预先添加票证和票证id:
/tickets//call_logs

看起来您在routes.rb中做了更改,但没有在模型中维护关系。正如rake所说 票证呼叫日志GET/TICKES/:票证id/呼叫日志(:格式)


应该可以通过/ticket/id/call_logs访问,现在这里的“id”是ticket id。这将列出该特定ticket_id的所有呼叫日志。

是否用有效的ticket id替换?是的,现在我得到了错误:未定义的方法“call_logs”用于#。这与您的路由无关。这可能与不定义模型之间的关系有关。