0

特定の形式にする必要があるため、タイムラインに必要な JSON ファイルを生成するために json_builder を使用しました。ただし、ページを読み込むと、白い背景と読み込み中の gif でスタックします。サンプルデータへのリンクを提供すると機能しますが、ユーザー向けに生成されたデータは提供しません。HTML ページ (users/1/events) は問題なく動作します。誰でも理由がわかりますか?もうアイデアが尽きた!!

アップデート:

users/1/events.json から JSON のコンテンツを貼り付けた静的ファイルにリンクするように JS を取得しましたが、正常に動作します。したがって、問題は、JS がページをフェッチしようとしたときにページが空白であり、実際にその URL にアクセスしたときにのみページが読み込まれることであると想定しています。どうすればこれを回避できますか?

生成された JSON ファイル (/users/1/events.json に移動して取得):

{
  "timeline": {
    "headline": "Emily",
    "type": "default",
    "text": "A Timeline",
    "startDate": "1922,10,30",
    "date": [
      {
        "startDate": "2012,11,17",
        "endDate": "2012,11,17",
        "headline": "My Birthday",
        "text": "This is my birthday",
        "asset": {
          "media": "http://www.youtube.com/watch?v=dePMU8R131s",
          "credit": "",
          "caption": "Happy Birthday"
        }
      }
    ]
  }
}

必要な構文:

{
    "timeline":
    {
        "headline":"Stuff People Say",
        "type":"default",
        "text":"People say stuff",
        "startDate":"2012,1,26",
        "date": [
            {
                "startDate":"2012,1,26",
                "endDate":"2012,1,27",
                "headline":"Stuff Politicians Say",
                "text":"<p>In true political fashion, his character rattles off common jargon heard from people running for office.</p>",
                "asset":
                {
                    "media":"http://youtu.be/u4XpeU9erbg",
                    "credit":"",
                    "caption":""
                }
            },
            {
                "startDate":"2012,1,10",
                "headline":"Stuff Nobody Says",
                "text":"<p>Have you ever heard someone say “can I burn a copy of your Nickelback CD?” or “my Bazooka gum still has flavor!” Nobody says that.</p>",
                "asset":
                {
                    "media":"http://youtu.be/f-x8t0JOnVw",
                    "credit":"",
                    "caption":""
                }
            }
        ]
    }
}

コントローラ (関連ビット):

class EventsController < ApplicationController

  respond_to :json, :html

def myevents
    @events = current_user.events
    respond_with @users
  end

end

ルート:

resources :events do
    member do
      get 'myevents'
    end
  end

match 'users/:id/events' => 'events#myevents'

タイムラインを呼び出す JS:

<%= javascript_include_tag "/js/storyjs-embed.js" %>
        <script>
            $(document).ready(function() {
                createStoryJS({
                    type:       'timeline',
                    width:      '800',
                    height:     '600',
                    source:     '/users/<%= current_user.id %>/events.json',
                    embed_id:   'my-timeline'
                });
            });
        </script>
4

1 に答える 1

1

最後に答えが見つかりました。フォームのjsがJSONファイルを正しく読み取っていませんでした。コールバックを追加する必要がありました。

于 2012-10-16T09:49:46.387 に答える