特定の形式にする必要があるため、タイムラインに必要な 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>