JSON::生成器错误 - 应用抛出"only generation of JSON objects or arrays allowed"错误



我正在使用Ruby on Rails 4.1为我的示例项目创建一个订票应用程序。三个是三个模型-事件,门票和预订。活动有很多门票和预订。门票有很多预订,它们属于活动。预订属于活动和门票。

这是gemfile:

source 'http://code.stripe.com'
source 'https://rubygems.org'
ruby '2.1.2'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.1'

# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.3'
gem 'execjs'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer',  platforms: :ruby
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
gem 'bootstrap-sass', '~> 3.2.0'
gem 'figaro'
gem 'stripe'
gem 'tinymce-rails'
gem 'geocoder'
gem 'gmaps4rails'
gem 'heroku'
gem 'iconv'
gem 'multi_json', '1.10.1'
gem 'therubyracer'
group :development do
  gem 'sqlite3'
end
group :production do
  gem 'pg'
  gem 'thin'
  gem 'rails_12factor'
end
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0',          group: :doc
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring',        group: :development

我使用tinymce-rails gem在新建和编辑页面中创建一个所见即所得的编辑器。gem需要在所有相应的视图文件中使用<%= tinymce %>。应用程序运行良好,我可以在本地使用编辑器,没有任何问题。

新的事件页看起来像:

<h2>Create an Event</h2>
<%= tinymce_assets %>
<%= form_for (@event) do |f| %>
  <% if @event.errors.any? %>
      <div id="error_explanation">
        <h2><%= pluralize(@event.errors.count, "error") %> prohibited
          this event from being saved:</h2>
        <ul>
        <% @event.errors.full_messages.each do |msg| %>
          <li><%= msg %></li>
        <% end %>
        </ul>
      </div>
  <% end %>
    <div class="form-group">
      <%= f.label :name %>
      <%= f.text_field :name, class: "form-control" %>
    </div>
    <div class="form-group">
      <%= f.label :about %>
      <%= f.text_area :about, class: "tinymce" %>
    </div>
    <div class="dropdown">
      <%= f.label :time_zone %>
      <%= f.time_zone_select :time_zone, nil, {}, {class: "btn btn-default dropdown-toggle"} %>
    </div>
    <div class="form-group">
      <%= f.label :start_date %>
      <%= f.datetime_select :start_date %>
    </div>
    <div class="form-group">
      <%= f.label :end_date %>
      <%= f.datetime_select :end_date %>
    </div>
    <div class="form-group">
      <%= f.label :location %>
      <%= f.text_field :location, class: "form-control" %>
    </div>
    <div class="form-group">
      <%= f.label :contact_info %>
      <%= f.text_area :contact_info, class: "form-control" %>
    </div>
      <%= f.hidden_field :latitude %>
      <%= f.hidden_field :longitude %>
      <%= f.submit "Create Event", class: "btn btn-primary" %>
    <% end %>
    <%= tinymce %>

昨天我尝试将应用程序部署到Heroku。我遵循本教程http://railsapps.github.io/rails-heroku-tutorial.html并预编译了资产rake资产:precompile命令。

从那时起,我无法在开发和生产环境中使用创建和编辑页面。我得到JSON::GeneratorError -"只允许生成JSON对象或数组"错误,并且视图文件底部的<%= tinymce %>行被突出显示。这发生在我的本地开发环境中,它之前运行良好。

如果我从页面中删除<%= tinymce %>,它们加载得很好。我试过添加rubyracer, execjs和multi_json宝石跟随早期的SE线程,但它仍然不起作用。如何克服这一点?

从教程链接的官方文档指定了以下命令来预编译:RAILS_ENV=production bundle exec rake assets:precompile

最新更新