質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

3661閲覧

フルカレンダー「ActionController::UnknownFormat」json,jquery

seen

総合スコア49

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2017/09/23 09:58

編集2017/09/25 00:54

フルカレンダーというgemを使ってDBの予定レコードを表示、反映させるアプリをつくっています。
カレンダーを表示させるところまでは成功したのですがレコードを反映させることができません。

エラー内容
ActionController::UnknownFormat in EventsController#events

ActionController::UnknownFormat

Extracted source (around line #6):
4@event = Event.all
5 # render :json => @event
6respond_to do |format|
7format.json {
8render json:
9@event.to_json }

手順としては、Eventモデルに手動でレコードを入れ

#現在入っているレコード irb(main):002:0> Event.all Event Load (19.4ms) SELECT "events".* FROM "events" => #<ActiveRecord::Relation [#<Event id: 1, user_id: 1, title: "sdr", allDay: true, start: "2017-09-30 17:00:00", created_at: "2017-09-23 03:49:33", updated_at: "2017-09-23 03:49:33">]>

calendar.coffee.でこのようになっています。参考にしたサイトではjs表記でしたが、coffeeスクリプトに変換しないと動作しないとの情報を得て以下のようにしました。下段の方は自信ないです。

#calendar.coffee $(document).ready -> $('#calendar').fullCalendar header: left: 'prev,next today', center: 'title', #ここまでOK #以下でカレンダーにレコードを反映? events: '/events.json' editable: true return

eventsコントローラーに記述。ここでeventsコントローラーをrails g して記述しましたが合ってますかね? calendarコントローラーではないですよね?(どちらも試してエラーが出ちゃってんですけど) これでカレンダー上に出力されるのでしょうか?

class EventsController < ApplicationController def events @event = Event.all # render :json => @event respond_to do |format| format.json { render json: @event.to_json } end end end

ちなみにカレンダーが表示されているviewはこのようにしていましてきちんと表示されています。

<div id="calendar"></div> <p>Find me in app/views/calendar/index.html.erb</p>

そしてroutesはこちらです。

Rails.application.routes.draw do root to: 'calendar#index' get 'calendar/index' get 'events', to: 'event#events' end

rake routes では以下のようになっており

vagrant@vagrant-ubuntu-trusty-32:/vagrant/lesson2$ rake routes Prefix Verb URI Pattern Controller#Action root GET / calendar#index calendar_index GET /calendar/index(.:format) calendar#index events GET /events(.:format) event#events step1 GET /step1(.:format) people#step1

http://localhost:3000/eventsにアクセスすると問題のエラーとなります。また、http://localhost:3000/events.jsonとするとエラーは出ずにブラウザにはこのようにjson表示されます。

[{"id":1,"user_id":1,"title":"sdr","allDay":true,"start":"2017-09-30T17:00:00.000Z","created_at":"2017-09-23T03:49:33.059Z","updated_at":"2017-09-23T03:49:33.059Z"}]

respond_to do |format|しているのにActionController::UnknownFormatというのはどういったことなんでしょうか...
すみませんがご教示いただけるとたすかります。 よろしくお願いします。

参考にさせていただいているサイトはこちらです。
http://qiita.com/fukumura/items/98503d12981be79c417e[リンク内容](http://qiita.com/fukumura/items/98503d12981be79c417e)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

coffeescriptの記述が不十分でeventsコントローラーから受け取る内容をキャッチできないからエラーが出ていたようです。

内容は理解しきれていませんが参考サイトのように

$(document).ready -> $('#calendar').fullCalendar header: left: 'prev,next today' center: 'title' # right: 'month,agendaWeek,agendaDay' # navLinks: true selectable: true selectHelper: true select: (start) -> title = prompt('イベントを追加') eventData = undefined if title eventData = title: title start: start end: end $('#calendar').fullCalendar 'renderEvent', eventData, true $('#calendar').fullCalendar 'unselect' return events: '/events.json' editable: true return

としたところイベントが反映されました。

events: '/events.json'
editable: true
return
だけでは反映されません。 勉強します。。

それと
http://localhost:3000/events とイベンツコントローラーにアクセスしていましたが
http://localhost:3000/calendar/indexにアクセスするのですね。eventsコントローラはcoffeeから呼ばれているだけなのでリクエストは
routes
calendar_controller_index
calender_index_view
coffeescript
events_controller
eventsDBの内容をjsonでという流れでした。

投稿2017/09/25 05:41

seen

総合スコア49

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問