2012-07-25 146 views
0

我无法通过Ajax请求重新渲染局部图。我目前可以通过诸如alert()之类的js文件传递其他内容,甚至可以更改当前div中的html。但是,当我尝试渲染部分(在这种情况下评级)时,什么都不会刷新。这些部分在它们在分页和负载上渲染的意义上工作得很好,但在单击upvote或downvote之后却不行。我使用嵌套partials,以便首先渲染_tracks,然后_rating。这就是我所拥有的......我错过了什么?Rails 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 })) %>") 

@符号通过传递变量,不像在以前的部分循环,你并不需要它。现在工作正常。