【问题标题】:Rails Ajax Render Partial (voting system)Rails Ajax Render Partial(投票系统)
【发布时间】:2012-07-25 16:08:38
【问题描述】:

我无法通过 Ajax 请求重新呈现部分内容。我目前可以通过 js 文件传递​​其他内容,例如 alert() 甚至更改当前 div 中的 html。但是当我尝试渲染部分(在这种情况下为评级)时,什么都不会刷新。从它们在分页和加载时呈现的意义上说,部分工作正常,但在我单击赞成或反对票之后就不行了。我正在使用嵌套的部分,以便它首先呈现_tracks,然后是_rating。这就是我所拥有的......我错过了什么?

投票.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

【问题讨论】:

    标签: jquery ajax ruby-on-rails-3.2


    【解决方案1】:
    $(".rating").html("<%= escape_javascript( render( :partial => "rating", :locals => { :track => track }) ) %>")
    

    需要

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

    @ 符号传递变量,与前面部分中不需要它的 for 循环不同。现在工作正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 1970-01-01
      • 2015-10-17
      相关资源
      最近更新 更多