1

本当に奇妙なエラーに遭遇しました。「Blogit」をインストールして、いくつかの要素を追加しようとしています。新しいエントリを送信すると、奇妙なエラーが発生します。

Template is missing

Missing template blogit/posts/create, blogit/application/create, application/create with 
{:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in: * 
"/Users/James/Documents/Websites/Backpack Bug/app/views" * "/Users/James/.rvm/gems/ruby-
1.9.3-p0/gems/blogit-0.4.8/app/views" * "/Users/James/.rvm/gems/ruby-1.9.3-
p0/gems/kaminari-0.14.1/app/views" * "/Users/James/.rvm/gems/ruby-1.9.3-p0/gems/devise-
2.1.2/app/views"

これは私のルーティングに関係していると感じています。ここにroutes.rbがあります

appname::Application.routes.draw do

root :to => 'locations#index'

devise_for :users


resources :locations do
   collection do
   get 'location'
  end
end

mount Blogit::Engine => "/blog", :as => "blog" 

end

投稿コントローラーは次のとおりです。

module Blogit

class PostsController < ApplicationController

unless blogit_conf.include_admin_actions
  before_filter :raise_404, except: [:index, :show, :tagged]
end

blogit_authenticate(except: [:index, :show, :tagged])

blogit_cacher(:index, :show, :tagged)
blogit_sweeper(:create, :update, :destroy)

def index
  respond_to do |format|
    format.xml {
      @posts = Post.order('created_at DESC')
    }
    format.html {
      @posts = Post.for_index(params[:page])
    }
    format.rss {
      @posts = Post.order('created_at DESC')
    }
  end
end

def show
  @post    = Post.find(params[:id])
  @comment = @post.comments.new
end

def tagged
  @posts = Post.for_index(params[:page]).tagged_with(params[:tag])
  render :index
end

def location
  @georesult = Geocoder.search(params[:location])

 respond_to do |format|
  format.html {render :layout=>false}# venues.html.erb
 end
end

def new
  @post = current_blogger.blog_posts.new(params[:post])
  @location = @post.locations.build
end

def edit
  @post = current_blogger.blog_posts.find(params[:id])
  @location = @post.locations.new
end

def create
  @post = current_blogger.blog_posts.new(params[:post])

respond_to do |format|
  if @post.save
    format.html { redirect_to @post, :method => :get, notice: 'Blog post was successfully created.' }
    format.json { render json: @post, status: :created, location: @post }
  else
    format.html { render action: "new" }
    format.json { render json: @post.errors, status: :unprocessable_entity }
  end
end



end

def update
  @post = current_blogger.blog_posts.find(params[:id])
  if @post.update_attributes(params[:post])
    redirect_to @post, notice: 'Blog post was successfully updated.'
  else
    render action: "edit"
  end
end

def destroy
  @post = current_blogger.blog_posts.find(params[:id])
  @post.destroy
  redirect_to posts_url, notice: "Blog post was successfully destroyed."
end

private

def raise_404
  # Don't include admin actions if include_admin_actions is false
  render file: "#{Rails.root}/public/404.html", status: :not_found, layout: false
end

end

end

これまでソースから変更したのは、場所の検索を可能にし、同じ投稿アクションで場所テーブルに送信できるマルチパート フォームを基本的に作成したことだけです。これが何か関係があるかどうかはわかりません。このコードをすべて投稿できますが、かなり長いです。これも役立つと思われる場合はお知らせください。

ご協力ありがとうございました。率直に言って、私は困惑しています。

ジェームズ

4

1 に答える 1

1

ただの予感:あなたのlocationアクションが呼び出されているかどうかを確認してください。redirect_toコントローラーでの呼び出しlocationによって同じコントローラーのメソッドが呼び出されるという、わずかに異なるエラーが発生しました。(メソッドraiseの先頭にaをlocation付けると、すぐに通知されます。)

なぜこれが起こったのかを正確に調査しようとはしていませんが、locationアクションの名前を変更するとこれが修正されました(明らかに、JavaScriptのAJAXリクエストなど、そのエンドポイントを参照する他のコードを変更する必要がありました)。Railsの魔法、間違いない。

于 2012-12-06T03:41:42.983 に答える