我一直在尝试使用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
答案 0 :(得分:0)
$ bundle exec spring stop
$ bundle install
$ bundle exec rails s
jbuilder
有一个初始化钩子,用于定义.jbuilder
模板处理程序。没有它,Rails不知道如何处理.jbuilder
模板文件。初始化程序无法运行,可能是因为spring
在安装jbuilder
时从未重新启动,或者jbuilder
未安装。