Rails 3: действие "Создать и удалить" выдает ошибку "Шаблон не найден"
Я столкнулся с действительно странной ошибкой. Я установил 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"
У меня есть чувство, что это связано с моим маршрутом. Вот маршруты.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
Все, что я до сих пор изменил по исходному тексту, это то, что я в основном создал многочастную форму, которая позволяет искать местоположения и отправляет их в таблицу местоположений в одном и том же посте. Не уверен, что это как-то связано с этим. Я могу опубликовать весь этот код, но он довольно длинный. Дайте мне знать, если вы думаете, что это будет полезно.
Большое спасибо за вашу помощь! Честно говоря, я в тупике.
Джеймс
1 ответ
Просто предчувствие location
действие становится вызванным. Я только что столкнулся с немного другой ошибкой, когда redirect_to
в моем контроллере были причиной моего location
метод в том же контроллере, чтобы получить вызов. (Ввод raise
в начале location
метод быстро даст вам знать.)
Я не пытался выяснить, почему это происходило, но переименовал location
действие исправило это (очевидно, это требовало изменения любого другого кода, который ссылался на эту конечную точку, как запросы AJAX в моем JavaScript). Без сомнения, магия рельсов.