ruby on rails 3 -我如何修复这个错误?: ActionView::MissingTemplate(模板丢



我的站点在我的开发机器上工作,部署到heroku我在日志中得到这个:

2013-01-11T19:29:38+00:00 app[web.1]: Started GET "/hints" for 206.255.88.68 at 2013-01-11 19:29:38 +0000
2013-01-11T19:29:38+00:00 heroku[nginx]: 206.255.88.68 - - [11/Jan/2013:19:29:38 +0000] "GET /hints HTTP/1.1" 500 643 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:17.0) Gecko/20100101 Firefox/17.0" baconlanguagetomato.com
2013-01-11T19:29:38+00:00 heroku[router]: at=info method=GET path=/hints host=baconlanguagetomato.com fwd=206.255.88.68 dyno=web.1 queue=0 wait=0ms connect=1ms service=26ms status=500 bytes=643
2013-01-11T19:29:38+00:00 app[web.1]: 
2013-01-11T19:29:38+00:00 app[web.1]: ActionView::MissingTemplate (Missing template hints/index, application/index with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder]}. Searched in:
2013-01-11T19:29:38+00:00 app[web.1]:   * "/app/app/views"
2013-01-11T19:29:38+00:00 app[web.1]:   * "/app/vendor/bundle/ruby/1.9.1/gems/devise-2.2.0/app/views"
2013-01-11T19:29:38+00:00 app[web.1]:   * "/app/vendor/bundle/ruby/1.9.1/gems/kaminari-0.14.1/app/views"
2013-01-11T19:29:38+00:00 app[web.1]: ):
2013-01-11T19:29:38+00:00 app[web.1]:   app/controllers/hints_controller.rb:34:in `index'
2013-01-11T19:29:38+00:00 app[web.1]: 
2013-01-11T19:29:38+00:00 app[web.1]: 

这是我的路由文件的一部分:

resources :hints do
    collection do
        get 'found_sentences'
    end
end
这是我的hints_controller.rb:
#encoding: utf-8
class HintsController < ApplicationController
    # GET /hints
    # GET /hints.json
    authorize_resource
    before_filter :authenticate_user!
    layout "application", :except => [:found_sentences]
    # GET /hints/find_sentences/
    def found_sentences
        #authorize! :find_sentences, @user, :message => 'Not authorized as an administrator.'
        @hints = Hint.where("sentence LIKE ? AND user_id =?", "%#{params[:word]}%", current_user.id) #.order("LENGTH(sentence) ASC").limit(5)
        render :layout => 'layouts/found_sentences'
        #respond_to do |format|
        #   format.html # find_sentences.html.erb
        #   format.json { render json: @hints }
        #end
    end
    def index
        #authorize! :index, @user, :message => 'Not authorized as an administrator.'
        #@hints = Hint.order(:created_at).reverse()
        @hints = Hint.find_all_by_user_id(current_user.id).reverse()
        #@hints = @current_user.hints
        respond_to do |format|
            format.html # index.html.erb
            format.json { render json: @hints }
        end
    end
    # GET /hints/1
    # GET /hints/1.json
    def show
        #authorize! :show, @user, :message => 'Not authorized as an administrator.'
        @hint = Hint.find(params[:id])
        #@hint = @current_user.hints.find(params[:id])

        respond_to do |format|
            format.html # show.html.erb
            format.json { render json: @hint }
        end
    end
    # GET /hints/new
    # GET /hints/new.json
    def new
        #authorize! :new, @user, :message => 'Not authorized as an administrator.'
        #@hint = Hint.new
        @hint = Hint.new(:user_id => @current_user_id)
        respond_to do |format|
            format.html # new.html.erb
            format.json { render json: @hint }
        end
    end
    # GET /hints/1/edit
    def edit
        #authorize! :edit, @user, :message => 'Not authorized as an administrator.'
        @hint = Hint.find(params[:id])
        #@hint = Hint.find(:user_id => @current_user_id)
        #todo shouldn't be able to edit other user's hints. for some reason the Lesson model responds to @current_user.lessons, but the Hint model doesn't respond to @current_user.hints
    end
    # POST /hints
    # POST /hints.json
    def create
        #authorize! :create, @user, :message => 'Not authorized as an administrator.'
        @hint = Hint.new(params[:hint])

        respond_to do |format|
            if @hint.save
                format.html { redirect_to @hint, notice: 'Hint was successfully created.' }
                format.json { render json: @hint, status: :created, location: @hint }
            else
                format.html { render action: "new" }
                format.json { render json: @hint.errors, status: :unprocessable_entity }
            end
        end
    end
    # PUT /hints/1
    # PUT /hints/1.json
    def update
        #authorize! :update, @user, :message => 'Not authorized as an administrator.'
        @hint = Hint.find(params[:id])
        respond_to do |format|
            if @hint.update_attributes(params[:hint])
                format.html { redirect_to @hint, notice: 'Hint was successfully updated.' }
                format.json { head :no_content }
            else
                format.html { render action: "edit" }
                format.json { render json: @hint.errors, status: :unprocessable_entity }
            end
        end
    end
    # DELETE /hints/1
    # DELETE /hints/1.json
    def destroy
        #authorize! :destroy, @user, :message => 'Not authorized as an administrator.'
        @hint = Hint.find(params[:id])
        @hint.destroy
        respond_to do |format|
            format.html { redirect_to hints_url }
            format.json { head :no_content }
        end
    end
end

我尝试删除这一行:render :layout => 'layouts/found_sentences'并取消注释:

    #respond_to do |format|
    #   format.html # find_sentences.html.erb
    #   format.json { render json: @hints }
    #end

但这不起作用。接下来我应该尝试什么?

要求更新:

[~/rails_projects/blt]$ls app/views/{application,hints}
ls: app/views/application: No such file or directory
app/views/hints:
_form.html.erb           edit.html.erb            found_sentences.html.erb index.html.erb           new.html.erb             show.html.erb
[~/rails_projects/blt]$cd app
[~/rails_projects/blt/app]$cd views
[~/rails_projects/blt/app/views]$cd application
bash: cd: application: No such file or directory
[~/rails_projects/blt/app/views]$ls
content            dictionary_entries home               lessons            users
devise             hints              layouts            user_mailer
[~/rails_projects/blt/app/views]$

问题是在index的行动,而不是在find_sentences。添加index.html.erbapp/views/hints

这不是问题所在。

请阅读完整的对话,看看我们如何定位实际问题。

用户正在使用mac,其文件系统不区分大小写。模板目录用大写H表示提示(app/views/Hints)。Heroku使用linux和区分大小写的文件系统,这会导致错误。

相关内容

  • 没有找到相关文章

最新更新