【问题标题】:JSON::GeneratorError - App throws "only generation of JSON objects or arrays allowed" errorJSON::GeneratorError - 应用程序抛出“只允许生成 JSON 对象或数组”错误
【发布时间】:2014-07-30 03:54:03
【问题描述】:

我正在使用 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 需要在所有相应的视图文件中使用 。该应用程序运行良好,我能够在本地使用编辑器而没有任何问题。

新的活动页面如下所示:

<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 并预编译了 assets rake assets:precompile 命令。

从那时起,我无法在开发和生产环境中使用创建和编辑页面。我收到 JSON::GeneratorError - "only generation of JSON objects or arrays allowed" 错误,并且视图文件底部的 行被突出显示。这发生在我以前运行良好的本地开发环境中。

如果我从页面中删除 ,它们可以正常加载。我曾尝试在早期的 SE 线程之后添加 ruby​​racer、execjs 和 mulit_json gem,但它仍然不起作用。如何度过这个难关?

【问题讨论】:

    标签: ruby-on-rails ruby json


    【解决方案1】:

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

    【讨论】:

    • 你在运行之前清除了已经预编译的资产吗?我怀疑你的一个资产加载了两次,我以前从开发干扰的预编译内容中看到它。
    • 对不起,如果我的问题不清楚。我现在在本地开发环境中也面临同样的问题。我希望在担心生产环境之前让开发人员正常工作。
    • 对。您在错误的环境中本地编译资产,因此它们现在与您的正常开发资产冲突。删除您编译的资产,然后在环境设置为生产环境的情况下重新运行命令,它应该在本地和生产环境中自行排序。
    • 所以,这就是我现在所做的。我进入 /public/assets 并删除了已编译的资产。然后我运行了 RAILS_ENV=production bundle exec rake assets:precompile 命令。重新启动服务器,但是,我在开发中得到了同样的错误。
    猜你喜欢
    • 1970-01-01
    • 2013-08-26
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多