Rails缺少JBuilder文件模板

时间:2017-07-18 23:32:44

标签: ruby-on-rails fullcalendar ruby-on-rails-5 jbuilder

我一直在尝试使用Fullcalendar来显示来自JSON提要的事件。 JSON提要中的事件由SchoolEventsController生成。但是,事件不会出现在Fullcalendar上。此外,查看JSON文件(school_events / index.json.jbuilder)会产生此错误:

/ palendar.json中的

ActionController :: UnknownFormat SchoolEventsController #index缺少此请求格式和变体的模板。 request.formats:[“application / json”] request.variant:[]

我想我已将问题缩小到这两个文件:

school_events_controller.rb 中的

索引函数:

class SchoolEventsController < ApplicationController

    def index
        @events = @calendar.events
        respond_to do |format|
            format.html # index.html.erb
            format.json # index.json.jbuilder?
        end
    end

end

school_events / index.json.jbuilder

json.array!(@events) do |event|
    date_format = event.all_day? ? '%Y-%m-%d' : '%Y-%m-%dT%H:%M:%S'
    json.id event.id
    json.title event.name
    json.start event.start_time.strftime(date_format)
    json.end event.end_time.strftime(date_format)
    json.url event_url(event, format: :html)
end

的Gemfile

source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?('/')
  "https://github.com/#{repo_name}.git"
end

ruby '2.3.1'
gem 'rails', '~> 5.0.2'
gem 'mime-types', '~> 3.1'
gem 'paperclip', '~> 5.0'
gem 'rmagick', '~> 2.15'
gem 'friendly_id', '~> 5.1'
gem 'closure_tree', '~> 6.0'
gem 'ancestry',     '~> 3.0'
gem 'ranked-model', '~> 0.4.0'
gem 'mailgun_rails', '0.9.0'
gem 'nested_form', '0.3.2'
gem 'event-calendar', github: 'kirandc/event_calendar', require: 'event_calendar'
gem 'jbuilder', '~> 1.2'
gem 'ransack', '~> 1.7'
gem 'sprockets-rails', '~> 3.1'
gem 'flash_cookie_session', github: 'trevorturk/flash_cookie_session'
gem 'date_validator', '~> 0.9.0'
gem 'jquery-rails',        '~> 4.1'
gem 'jquery-ui-rails',     '~> 6.0'
gem 'jquery_mobile_rails', '~> 1.3.2'
gem 'fancybox2-rails', github: 'ChallahuAkbar/fancybox2-rails', tag: 'v0.3.0'
gem 'kaminari', '~> 1.0'
gem 'redcarpet', '~> 3.3'
gem 'pg', '~> 0.21.0'
gem 'pghero', '~> 1.2'
gem 'autoprefixer-rails', '~> 7.0'
gem 'bourbon',            '~> 4.2'
gem 'normalize-rails',    '~> 4.1'
gem 'sass-rails',         '~> 5.0'
gem 'uglifier',           '~> 3.0'
gem 'bcrypt', '~> 3.1', require: false
gem 'google-api-client', '~> 0.13.0'
gem 'recaptcha', '~> 4.1', require: 'recaptcha/rails'
gem 'yajl-ruby', '~> 1.3', require: false
gem 'tinymce-rails', '~> 4.3'
gem 'turbolinks', '~> 5.0'
gem 'sunspot_rails', '~> 2.2'
gem 'image_optim',      '~> 0.25.0'
gem 'image_optim_pack', '~> 0.5.0'

group :production do
  gem 'redis-rails', '~> 5'
  gem 'sitemap_generator', '~> 5.1'
  gem 'newrelic_rpm', '~> 4.0'
  gem 'rollbar', '~> 2.11'
end

group :development, :production do
  gem 'rack-mini-profiler', '~> 0.10.1'
  gem 'whenever', '~> 0.9.4', require: false
end

group :development do
  gem 'capistrano',               '~> 3.7',   require: false
  gem 'capistrano-bundler',       '~> 1.1',   require: false
  gem 'capistrano-faster-assets', '~> 1.0',   require: false
  gem 'capistrano-rails',         '~> 1.1',   require: false
  gem 'better_errors',     '~> 2.1'
  gem 'binding_of_caller', '~> 0.7.2'
  gem 'thin', '~> 1.6'
  gem 'guard',            '~> 2.13'
  gem 'guard-livereload', '~> 2.5', require: false
  gem 'brakeman', '~> 3.3', require: false
  gem 'pry', '~> 0.10.3'
  gem 'letter_opener', '~> 1.4'
  gem 'yard', '~> 0.9.5'
  gem 'bullet', '~> 5.0'
  gem 'rubocop',       '~> 0.4',    require: false
  gem 'rubocop-rspec', '~> 1.7',    require: false
  gem 'scss_lint',     '~> 0.54.0', require: false
  gem 'progress_bar', '~> 1.0'
  gem 'sunspot_solr', '~> 2.2'
end

group :development, :test do
  gem 'spring-commands-rspec',   '~> 1.0'
  gem 'spring-commands-rubocop', '~> 0.2.0'
  gem 'rails-controller-testing', '~> 1.0.1'
  gem 'guard-rspec', '~> 4.6'
  gem 'rspec',       '~> 3.4'
  gem 'rspec-rails', '~> 3.4'
end

group :test do
  gem 'capybara', '~> 2.7'
  gem 'factory_girl_rails', '~> 4.7'
  gem 'shoulda-matchers', '~> 3.1', require: false
  gem 'launchy', '~> 2.4'
  gem 'simplecov', '~> 0.14.0', require: false
  gem 'database_cleaner', '~> 1.5', require: false
  gem 'webmock', '~> 3.0'
  gem 'accept_values_for', '~> 0.7.2'
end

routes.rb 中的相关路线:

scope defaults: { calendar_name: 'School Calendar' } do
    get '/calendar/list',             to: 'school_events#list',    as: :school_calendar_list
    get '/calendar/editors',          to: 'school_events#editors', as: :editors_school_calendar
    get '/calendar(/:year(/:month))', to: 'school_events#index',
                                      as: :school_calendar,
                                      constraints: { year: /20(?:1[1-9]|20)/, month: /\d{1,2}/ }
    resources :school_events, path: '/events', except: [:index]
  end

  scope '/calendar' do
    get '/edit', to: 'school_events#edit_calendar',
                 defaults: { calendar_name: 'School Calendar' },
                 as: :edit_school_calendar
    put '/',     to: 'school_events#update_calendar',
                 defaults: { calendar_name: 'School Calendar' }

    resources :google_syncs, only: %i[new create destroy], as: :school_calendar_google_syncs do
      get :authorize, on: :collection
    end
  end

当我用format.json替换SchoolEventsController中的format.json { render json: @events }时,calendar.json将输出(以JSON格式)我数据库中的所有所需事件。我不想使用这些输出,因为我需要一个凌乱的解决方法来重命名所有属性以符合Fullcalendar的要求。有没有人有办法解决这个问题?提前谢谢!

注意:我正在使用Rails 5

1 个答案:

答案 0 :(得分:0)

$ bundle exec spring stop
$ bundle install
$ bundle exec rails s

jbuilder有一个初始化钩子,用于定义.jbuilder模板处理程序。没有它,Rails不知道如何处理.jbuilder模板文件。初始化程序无法运行,可能是因为spring在安装jbuilder时从未重新启动,或者jbuilder未安装。

相关问题