2011-03-07 57 views
0

我想呈現與jquery ajax的帖子的創建,但我似乎無法讓它正常工作。它似乎使這個帖子非常奇怪(我認爲不存在)樣式,並且只有在頁面刷新後纔會出現閃光消息。頁面刷新後,帖子也會正確格式化。jquery ajax在軌道上的紅寶石渲染的新帖

這裏的JavaScript:

<body> 
<div class="container"> 
    <%= render 'layouts/header' %> 
    <section class="round"> 
<div id="flash_notice"><%= render 'shared/flash_messages'%></div> 
    <%= yield %> 
    </section> 
    <%= render 'layouts/footer' %> 
    <%= debug(params) if Rails.env.development? %> 
</div> 
</body> 

這是我的主頁(在應用程序佈局的yield渲染):

<table class="front" summary="For signed-in users"> 
<tr> 
    <td class="main"> 
    <h1 class="micropost">What's happening?</h1> 
    <%= render 'shared/micropost_form' %> 
    <%= render 'shared/feed' %> 
    </td> 
    <td class="sidebar round"> 
    <%= render 'shared/user_info' %> 
    <%= render 'shared/stats' %> 
    </td> 
</tr> 
</table> 

$("#micropost_form").before('<div id="flash_notice"><%= escape_javascript(flash.delete(:notice))%></div>'); 
$("#user_info").html("<%= pluralize(current_user.microposts.count, "micropost") %>"); 
$("#feed_items").prepend(" <%= escape_javascript(render(:partial => @micropost)) %>") 
$("#micropost_form")[0].reset(); 

我的應用程序佈局的主體

這裏是我的飼料部分:

<% unless @feed_items.empty? %> 
<table id="feed_items" class="microposts" summary="User microposts"> 
    <%= render :partial => 'shared/feed_item', :collection => @feed_items %> 
</table> 
<%= will_paginate @feed_items %> 
<% end %> 

我閃的消息部分:

<% flash.each do |key, value| %> 
    <div class="<%= key %>"><%= value %></div> 
<% end %> 

讓我知道是否有任何其他的代碼,我應該張貼。

那麼我做錯了什麼?如果您想查看所有代碼並在本地運行以更好地瞭解發生的情況,請點擊此處:https://github.com/meltzerj/sample_app

+0

我已經將此問題遷移到Stack Overflow,因爲此網站是關於審查工作代碼,而不是修復損壞的代碼。 – sepp2k 2011-03-07 20:30:32

回答

0

當您使用ajax時,您需要使用flash.now作爲flash消息。請參閱文檔here。 Rails正在尋找一個頁面刷新/重定向來從閃存哈希堆棧中進行推送和彈出,現在使用它將立即設置,然後您可以像上面那樣訪問它。您可以使用flash.now替代控制器中的常規閃存使用。像這樣的是非常典型的:

if @object.save 
    flash.now[:notice] = "Object successfully created" 
    else 
    ... 
    end 

所以,這將解決您的閃存問題。

至於奇怪的內容/造型,實際上看到標記有點難以評論。這看起來很奇怪我的唯一的事情就是render :partial => @micropost

我不知道,如果@micropost只是一個字符串,但你通常會做這樣的事情render :partial => 'path/to/partial', :object => @micropost

同樣這幾乎是不可能說沒有看到所有其他標記

+0

我不知道如何實現'flash.now'代碼。你如何提供示例說明? – 2011-03-07 21:52:16

+0

此外,你可以檢查出我提供給git hub的鏈接的標記。所有的代碼都在那裏。 – 2011-03-07 21:52:43

+0

在flash.now上添加了說明,但我沒有時間對源代碼進行拼貼並解決其他所有問題。無論如何,這並不是真正的重點。嘗試將代碼分解爲更小的操作,並專門測試每個代碼以查看其中斷的位置 – brad 2011-03-08 14:06:58