【问题标题】:Rails - jQuery/AJAX not refreshing partialRails - jQuery/AJAX 不刷新部分
【发布时间】:2012-10-16 10:45:02
【问题描述】:

我有一个显示部分事件的时间线视图 - 因此您可以直接在时间线视图上对事件进行 CRUD。我现在要做的是拥有它,以便当您单击事件旁边的“删除”时,删除部分刷新,以便用户可以看到该事件已被删除。我似乎无法让它工作 - 当用户单击删除时,事件确实被删除,但部分不会刷新。您必须刷新页面才能获得更新的部分。

另外,请有人告诉我如何请求“my-timeline” div 的更新内容,以便删除的事件也不会出现在其中吗?谢谢!

时间线/节目:

<div id="my-timeline"></div>
<div id="delete_events">
    <%= render :partial => "delete_events", :locals => { :events => current_user.events }%>     
</div>

时间线/_delete_events.html.erb:

<%= button_to 'Delete', event, confirm: "Are you sure?", method: :delete, :remote => true %>

事件/删除.js.erb:

$('#delete_events').html('<%= escape_javascript( render :partial => "/timelines/delete_events", :locals => { :events => current_user.events } ) %>');

事件控制器:

def destroy
    @event = Event.find(params[:id])
    @event.destroy

    respond_to do |format|
      format.html { redirect_to current_user.timeline, notice: 'Event was successfully removed.' }
      format.json { head :no_content }
      format.js
    end
  end

生成时间线的javascript(只是暂时放在这里!)到my-timeline div中:

<script>
            $(document).ready(function() {
                createStoryJS({
                    type:       'timeline',
                    width:      '820',
                    height:     '600',
                    source:     '/users/<%= current_user.id %>/events.json?callback',
                    embed_id:   'my-timeline',
                    font:       'Euphoria-Droid',
                    debug:      true,
                    gmap_key:   'foo',
                    maptype:    'HYBRID'
                });
            });
        </script>

【问题讨论】:

    标签: javascript jquery ruby-on-rails ajax partial


    【解决方案1】:

    我认为你应该改名

      events/delete.js.erb
    
        to
    
     events/destroy.js.erb
    

    并通过在destroy.js.erb中写入alert("ok")来检查控件来这里

    希望有效果

    【讨论】:

    • 傻我!!现在效果很好,谢谢!我还将如何刷新时间线 div 的内容?它是由 javascript 本身生成的,所以我不能只请求一个新的部分。谢谢!
    • 这个不行,时间线不是局部的,是javascript生成的。如何请求 div 的更新内容?谢谢。
    • 好的,我在上面添加了更多代码——生成时间线的 js 在应用程序布局中(这只是临时的!),并将时间线放在 my-timeline div 中。那么如何在不刷新页面的情况下更新 div 的内容呢?谢谢。
    • 这样的作品 - 我可以定位正确的 div,但我无法让它自行刷新。我只能说例如“你好,世界”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 2015-11-30
    • 2016-08-14
    • 2012-03-28
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多