导轨阿贾克斯渲染部分(投票系统)(Rails Ajax Render Partial (voting

2019-09-20 04:57发布

我无法再绘制的部分通过Ajax请求。 我目前通过js文件传给其他的东西,如警报(),甚至改变当前的div的HTML。 但是,当我尝试和渲染部分(等级,在这种情况下),什么都不会刷新。 谐音,它们在分页和负载渲染感做工精细,但不经过我单击给予好评或downvote。 我使用嵌套的谐音,使其呈现先_tracks,然后_rating。 下面是我have..what我失去了什么?

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

Answer 1:

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

需要是

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

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



文章来源: Rails Ajax Render Partial (voting system)