2011-07-02 22 views
0

以外的所有內容都可以在此Ajax提交中使用。電子郵件仍會發送併發送,但仍不會顯示任何Flash消息。除了通知

形式:

<%= form_for :fb_comment, :url => update_reply_feedback_path, :html => { :id => "reply" }, :remote => true do |f| %> 
     <%= f.text_area :reply, :size => '66x7' %><br> 
     <center><%= f.submit "Send Reply" %></center> 
    <% end %> 
在佈局文件

<%- flash.each do |name, msg| -%> 
    <%= content_tag :div, msg, :id => "flash_#{name}" %> 
<%- end -%> 

在控制器:

def reply2_feedback 
    ... 
    flash.now[:notice] = 'Reply was successfully sent.' 
    respond_to do |format| 
     format.html {} 
     format.js 
    end 
end 

在的application.js:

jQuery.ajaxSetup({ 
    'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")} 
}) 

$(document).ready(function() { 
    $("#reply").submit(function() { 
     $.post($(this).attr("action"), $(this).serialize(), null, "script"); 
     return false; 
    }) 
}) 

update_reply.js.erb:

$("#flash").html('<div class="notice_alert"><%= escape_javascript(flash.delete(:notice)) %></div>'); 

謝謝。

+0

我認爲這可能與字符串處理髮生在單引號和雙引號內的方式有關嗎?也許如果你把它分成兩部分。 var htmlstring =「

<%= escape_javascript(flash.delete(:notice)) %>
」,然後將html設置爲可以更容易調試的變量 – Msencenb

回答

0

在沒有解決方案的58個視圖之後,我決定洞悉最後期限的壓力,並通過向javascript添加一個簡單的警報來解決次要問題。如果有人發生這個問題,並提供了一個解決方案,使閃光信息的工作,然後我會切換到你的答案。感謝那些一炮而過的人。

$(document).ready(function() { 
    $("#reply").submit(function() { 
     $.post($(this).attr("action"), $(this).serialize(), null, "script"); 
     alert("Your reply was emailed."); 
     return false; 
    }) 
}) 
2

使用

flash.now[:notice] = 'Reply was successfully sent.' 

,而不是嘗試。

+1

由於沒有重定向,因此您需要此選項。 – Dex

+0

@HakonB和@Dex,感謝您的幫助。這是非常有用的信息。請查看我添加到上面問題的控制檯消息。我想知道如果我的語法在js.erb文件中是錯誤的。 – Jay

+1

嘗試使用FireBug或類似的東西,並檢查請求和響應,找出哪裏出了問題。你也可以檢查是否有任何javascript錯誤發生...... – HakonB