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

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

ただいまの
回答率

90.87%

  • Ruby on Rails

    6528questions

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

  • jQuery

    6129questions

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

  • JSON

    1007questions

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

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 373

seen

score 38

フルカレンダーという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リンク内容

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

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でという流れでした。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.87%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Ruby on Rails

    6528questions

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

  • jQuery

    6129questions

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

  • JSON

    1007questions

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