2012-07-25 4 views
0

Ajax 요청을 통해 부분 렌더링을 다시 할 수 없습니다. 나는 현재 alert()와 같은 js 파일을 통해 다른 것들을 전달할 수 있으며 심지어 현재 div의 html을 변경합니다. 그러나 부분 (등급)을 렌더링하려고 시도하면 아무 것도 새로 고칩니다. 부분 화는 페이지 매김 및로드시 렌더링되지만 upvote 또는 downvote를 클릭 한 후에는 제대로 작동하지 않습니다. _tracks를 먼저 렌더링하고 _rating을 렌더링 할 수 있도록 중첩 된 부분을 사용하고 있습니다. 여기에 내가 가진 것이 있는데 .. 내가 뭘 놓치고 있니?레일즈 Ajax 렌더링 부분 (투표 시스템)

없는 성공 vote.js.erb이와

$(".rating").html("<%= escape_javascript(render(:partial => 'rating')) %>") 

나는이.

$(".rating").html("<%= escape_javascript(render("rating")) %>") 
    $(".rating").html("<%= escape_javascript(render(:partial => "rating", :locals => { :track => track })) %>") 

이, 다른 한편으로는, 수행 업무 :

$(".rating").html("<%= escape_javascript("test text here) %>") 

_tracks.html.erb

<% for track in @tracks %> 
      <div class="span4"> 
       <div class="track"> 
        <div class="rating"> 
         <%= render :partial => "rating", :locals => { :track => track } %> 
        </div> 

        <a href="<%= track.youtube_link %>"></a> 

        <% if current_user.admin? %> 
         <%= link_to "delete", track, method: :delete, confirm: "You sure?" %> 
         <%= link_to "edit", edit_track_path(track) %> 
        <% end %> 
       </div> 
      </div> 
<% end %> 

_rating.html.erb

<% vt = track.votetype(current_user) %> 

       <% if vt != "up" %> 
        <%= link_to image_tag("up_arrow.png", alt: "Upvote"), vote_path(track, :type => "up"), :remote => true %> 
       <% elsif %> 
        <%= "up" %> 
       <% end %> 

       <%= track.rating %> 

       <% if vt != "down" %> 
        <%= link_to image_tag("down_arrow.png", alt: "Downvote"), vote_path(track, :type => "down"), :remote => true %> 
       <% elsif %> 
        <%= "down" %> 
       <% end %> 

트랙 컨트롤러

@vote.update_attributes(:vote_type => params[:type]) 
     if @vote.save 
     respond_to do |format| 
     format.html {redirect_to :back} 
     format.js 
     end 

답변

0
$(".rating").html("<%= escape_javascript(render(:partial => "rating", :locals => { :track => track })) %>") 

요구는 이전 부분에서 루프 당신이 필요하지 않은 경우와 달리 @ 기호를 통해 변수를 전달

$(".rating").html("<%= escape_javascript(render(:partial => "rating", :locals => { :track => @track })) %>") 

수 있습니다. 이제 잘 작동합니다.