2011-03-07 2 views
0

jquery 아약스 함께 게시물 작성을 렌더링하는 중이 야하지만 제대로 작동하도록 얻을 수 없습니다. 그것은 매우 이상한 (나는 존재하지 않는) 스타일로 게시물을 렌더링하는 것처럼 보이고 플래시 메시지는 페이지가 새로 고쳐진 후에 만 ​​나타납니다. 페이지가 새로 고쳐진 후에도 게시물의 형식이 올바르게 지정됩니다.레일에 루비에 새 게시물 jquery 아약스 렌더링

<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> 
:

<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 렌더링) 내 홈 페이지의 :

$("#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(); 

내 응용 프로그램 레이아웃의 본문 : 여기

는 자바 스크립트입니다

내 피드는 다음과 같습니다.

부분 (210)
<% 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

이 사이트는 깨진 코드를 수정하지 않고 작동 코드를 검토하기 때문에이 질문을 스택 오버플로로 마이그레이션했습니다. – sepp2k

답변

0

아약스를 사용하는 경우 플래시 메시지에 flash.now을 사용해야합니다. docs here을 참조하십시오. 레일스는 플래시 해시 스택에서 푸시/팝하기 위해 페이지 새로 고침/리디렉션을 찾고 있습니다. 이제 이것을 사용하여 즉시 설정 한 다음 위와 같이 액세스 할 수 있습니다. 컨트롤러의 일반적인 플래시 사용 대신에 flash.now를 사용할 수 있습니다. 이 같은 것은 매우 일반적입니다.

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

그러면 플래시 문제가 해결됩니다.

이상한 콘텐츠/스타일링에 대해서는 실제로 마크 업을 보지 않고도 의견을 말하기가 약간 어렵습니다. @micropost 그냥 문자열 인 경우 나에게 이상한 보이는 유일한 것은 내가 확실하지 해요 render :partial => @micropost

,하지만 당신은 일반적으로 모두 보지 않고 render :partial => 'path/to/partial', :object => @micropost

같은 것을 다시 말을 거의 불가능 할 거라고 다른 마크 업

+0

'flash.now' 코드를 구현하는 방법을 모르겠습니다. 모범 사례를 어떻게 제공합니까? –

+0

또한 git hub에 제공된 링크에서 마크 업을 확인할 수 있습니다. 모든 코드가 있습니다. –

+0

flash.now에 지침이 추가되었지만 소스 코드를 작성하고 다른 모든 사항을 해결할 시간이 없습니다. 어쨌든 그게 사실이 아닙니다. 코드를 작은 동작으로 나누고 각 동작을 구체적으로 테스트하여 어디에서 오류가 발생하는지 확인합니다. – brad

관련 문제