2013-08-07 16 views
0

我想創建一個時間軸,用戶可以在時間軸上創建事件。過去我的工作很好,但是之後我的Rails版本更新到3.2.14,並且它不再有效。如果版本之間發生了變化,或者我做錯了什麼,這可能是一個語法錯誤嗎?Rails-javascript沒有通過遠程調用加載div

時間軸顯示視圖呈現包含時間軸的部分,並創建/編輯/銷燬事件的表單部分。據我瞭解,表單正在提交,並應該調用create.js.erb。

實際發生的事情是,當我點擊「創建事件」時,頁面的內容被標準的「事件成功創建」通知(不是來自create.js.erb的通知)簡單地替換,並且一切都消失了。該事件已經創建。誰能幫忙?

時間表顯示視圖:

<div id="show-timeline"> 
<%= render :partial => "show_timeline" %> 
</div> 

<div class="content-box timeline-box"> 
    <div id="my-timeline-box"> 
     <%= render :partial => "my_timeline" %> 
    </div> 
<br /> 

<button id="new-event-button" class="btn btn-success btn-large">New Event</button> 
<button id="edit-events-button" class="btn btn-info btn-large">Edit Events</button> 
<button id="delete-events-button" class="btn btn-danger btn-large">Delete Events</button> 

<div id="events-forms"> 
    <div id="new-event"> 
     <%= render :partial => "new_event", :locals => { :event => Event.new(:timeline_id=>@timeline.id) }, :remote => true %> 
    </div> 

    <div id="edit-events"> 
     <%= render :partial => "edit_events", :locals => { :events => current_user.events }, :remote => true %> 
    </div> 

    <div id="delete_events"> 
     <%= render :partial => "delete_events", :locals => { :events => current_user.events } %>   
    </div> 
</div> 
<div id="events-forms-edit">&nbsp;</div> 

</div> 

事件/ create.js.erb

$('#new-event').html('<%= escape_javascript(render :partial => "/timelines/new_event", :locals => { :event => Event.new(:timeline_id=>@timeline.id) }, :remote => true) %>'); 
$('.notice').html("<p>Event was successfully created.</p>"); 
$('.notice').show(300); 
$('#my-timeline-box').html('<%= escape_javascript(render :partial => "/timelines/my_timeline") %>'); 
$('#show-timeline').html('<%= escape_javascript(render :partial => "/timelines/show_timeline") %>'); 
$('#edit-events').html('<%= escape_javascript(render :partial => "/timelines/edit_events", :locals => { :events => current_user.events }, :remote => true) %>'); 
$('#delete_events').html('<%= escape_javascript(render :partial => "/timelines/delete_events", :locals => { :events => current_user.events }) %>'); 

事件控制器創建行動:

def create 
    @event = Event.new(params[:event]) 
    @timeline = current_user.timeline 

    respond_to do |format| 
     if @event.save 
     format.html { redirect_to @event.timeline, notice: 'Event was successfully created.' } 
     format.json { render json: @event, status: :created, location: @event } 
     format.js 
     else 
     format.html { render action: "new" } 
     format.json { render json: @event.errors, status: :unprocessable_entity } 
     format.js 
     end 
    end 
    end 

任何幫助,將不勝感激!

更新:

_new_event.html.erb

<br /> 
<h2>Add an event</h2> 
<h4>Fill in the form and click 'Create Event' to add a new event to the timeline.</h4> 

<%= form_for(event, :remote => true) do |f| %> 
    <% if event.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(event.errors.count, "error") %> prohibited this event from being saved:</h2> 

     <ul> 
     <% event.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 
    <%=f.hidden_field 'timeline_id', :value => current_user.timeline.id %> 
    <div class="field"> 
    <%= f.label :date %><br /> 
    <%= f.date_select :start_date, :order => [:day, :month, :year], :start_year => 1800 %> 
    </div> 
    <div class="field"> 
    <%= f.label :title %><br /> 
    <%= f.text_field :headline, :size => 50 %> 
    </div> 
    <div class="field"> 
    <%= f.label :event_description %><br /> 
    <%= f.text_area :text, :size => "47x4" %> 
    </div> 
    <%= check_box_tag "blockCheck", :value => "1", :checked => false %> 
    <div class="field" id="media_box"> 
    <%= f.label :media %>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>Please paste a URL here</span><br /> 
    <%= f.text_field :media, :size => 50 %> 
    </div> 
    <div class="field"> 
    <%= f.label :media_description %><br /> 
    <%= f.text_area :caption, :size => "47x3" %> 
    </div> 
    <div class="actions"> 
    <%= f.submit 'Create Event', :class => "btn btn-success" %> 
    </div> 
<% end %> 

控制檯輸出(當 「創建活動」 被點擊):

Started POST "/events" for 127.0.0.1 at 2013-08-07 15:07:03 +0100 
Processing by EventsController#create as JS 
    Parameters: {"utf8"=>"V", "authenticity_token"=>"ppQnTSwha1veoTzAenrtl7uhtQ8wC 
F6c2/AZMDGA/UE=", "event"=>{"timeline_id"=>"4", "start_date(3i)"=>"7", "start_da 
te(2i)"=>"8", "start_date(1i)"=>"2013", "headline"=>"", "text"=>"", "media"=>"", 
"caption"=>""}, "commit"=>"Create Event"} 
    ←[1m←[36mUser Load (5.0ms)←[0m ←[1mSELECT "users".* FROM "users" WHERE "users 
"."id" = 2 LIMIT 1←[0m 
    ←[1m←[35mTimeline Load (15.0ms)←[0m SELECT "timelines".* FROM "timelines" WHE 
RE "timelines"."id" = 4 LIMIT 1 
    ←[1m←[36mTimeline Load (38.0ms)←[0m ←[1mSELECT "timelines".* FROM "timelines" 
WHERE "timelines"."user_id" = 2 LIMIT 1←[0m 
    ←[1m←[35m (0.0ms)←[0m begin transaction 
    ←[1m←[36mSQL (6.0ms)←[0m ←[1mINSERT INTO "events" ("caption", "created_at", " 
credit", "end_date", "headline", "media", "start_date", "text", "thumbnail", "ti 
meline_id", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)←[0m [["capti 
on", ""], ["created_at", Wed, 07 Aug 2013 14:07:04 UTC +00:00], ["credit", nil], 
["end_date", nil], ["headline", ""], ["media", ""], ["start_date", Wed, 07 Aug 
2013], ["text", ""], ["thumbnail", nil], ["timeline_id", 4], ["updated_at", Wed, 
07 Aug 2013 14:07:04 UTC +00:00]] 
    ←[1m←[35m (171.0ms)←[0m commit transaction 
    Rendered timelines/_new_event.html.erb (15.0ms) 
    Rendered timelines/_my_timeline.html.erb (0.0ms) 
    Rendered timelines/_show_timeline.html.erb (0.0ms) 
    ←[1m←[36mEvent Load (30.0ms)←[0m ←[1mSELECT "events".* FROM "events" INNER JO 
IN "timelines" ON "events"."timeline_id" = "timelines"."id" WHERE "timelines"."u 
ser_id" = 2←[0m 
    Rendered timelines/_edit_events.html.erb (41.0ms) 
    Rendered timelines/_delete_events.html.erb (3.0ms) 
    Rendered events/create.js.erb (5123.3ms) 
Completed 200 OK in 7899ms (Views: 7538.4ms | ActiveRecord: 265.0ms) 

但是,沒有得到呈現。

+0

我可以看到_new_event.html.erb部分 – beck03076

+0

我已經將它添加到原始問題的底部了。謝謝 – ecs

+0

你的螢火蟲控制檯的輸出是什麼? – beck03076

回答

0

檢查您是否已經在你的application.js.coffee的頂部以下行:

#= require jquery 
#= require jquery_ujs 

如果你不使用咖啡,線條應該是相同的,但與//=開始。

看來你不需要Rails Unobtrusive Javascript庫,所以你的表單文章被視爲HTML而不是JS。

如果你確實有這個依賴關係,你是否也可以提供與這個問題有關的JavaScript文件的代碼?

+0

是的,我在application.js中有這些行 - 你需要看哪些js文件?謝謝 – ecs

+0

首先,我需要創建事件動作的螢火蟲控制檯「RESPONSE」。您應該在控制檯中選擇POST並單擊選項卡「響應」以查看它。 –

+0

單擊「創建事件」按鈕時控制檯的輸出已添加到原始問題中。我的控制檯中沒有「回覆」標籤,抱歉。 – ecs