我使用的是Rails 3.2.3 /
Ruby 1.9.3p125 / jbuilder(0.4.0)
在我的视图/ mycontroller文件夹中,我有一个show.json.jbuilder文件.
当我测试我的本地机器上的所有东西,轨道s -e生产一切都很好.
JSON被渲染为预期的.
但是当我部署到Ubuntu LTS(Nginx / unicorn)时,我会收到以下错误消息:
ActionView::MissingTemplate (Missing template mycontroller/show,application/show with {:locale=>[:de,:en],:formats=>[:json],:handlers=>[:erb,:builder]}. Searched in: * "/home/deployer/apps/myapp/releases/#############/app/views" ):
当我检查我的服务器,如果jbuilder宝石安装与捆绑显示jbuilder一切似乎是对的.
奇怪的是,错误消息不显示:handlers => [:erb,:builder,:jbuilder]
jbuilder处理程序显然缺少.但是如何解决问题?
编辑:问题不是基于Jbuilder.我试过rabl,出现同样的问题.
有没有任何提示,如何调试?
这里有更多信息:
的Gemfile
source 'https://rubygems.org' gem 'rails','3.2.3' gem 'jquery-rails' gem 'MysqL2' gem 'simple_form' # Gems used only for assets and not required # in production environments by default. group :assets do gem 'sass-rails','~> 3.2.3' gem 'coffee-rails','~> 3.2.1' gem 'uglifier','>= 1.0.3' gem 'bootstrap-sass','2.0.2' end # Use unicorn as the app server gem 'unicorn' # Deploy with Capistrano gem 'capistrano' # for performance monitoring gem 'newrelic_rpm' # use asset pipline and flash gem 'swf_fu','~> 2.0' gem 'geocoder' # To use Jbuilder templates for JSON gem 'jbuilder'
调节器
def show end
show.json.jbuilder – 文件
json.(@map,:id)
解决方法
你的jbuilder似乎被跳过了.
jbuilder在你的Gemfile.lock文件?
cat Gemfile.lock | grep jbuilder
如果缺少:
RAILS_ENV=production bundle update jbuilder
jbuilder是否可加载?
RAILS_ENV=production bundle exec rails console > require 'jbuilder' => false # this is false if jbuilder is pre-loaded
你可以在控制台中建立
> Jbuilder.encode{|j| j.foo :bar } => "{\"foo\":\"bar\"}"
你可以建立你的控制器行动吗?
def the_method_you_are_testing raise Jbuilder.encode{|j| j.foo :bar } end
您是否看到与其他服务器设置相同的错误,例如Apache&乘客而不是Nginx&独角兽,还是简单的rails服务器?
rails server -e production
如果您将服务器应用程序从生产更改为开发,是否得到相同的结果?
rails server -e development
对于RABL,您可以尝试将RABL宝石最后放在Gemfile中吗?
gem 'rails' #... gem 'rabl'
要求建筑师后立即注册?
require 'tilt' require 'rabl' # ... require 'builder' Rabl.register!
你会得到与RABL主人相同的结果吗?
gem 'rabl',:git => "git://github.com/nesquena/rabl.git"