运维开发网

ruby-on-rails – Rails:使用按钮通过Ajax渲染部分

运维开发网 https://www.qedev.com 2020-06-11 11:35 出处:网络 作者:运维开发网整理
我目前有一个显示微博列表的页面,该页面还包括几个选项卡,例如最近最常讨论的最常见.我想知道如何在不刷新整个页面和通过ajax的情况下呈现微博的不同类型的列表顺序的最佳方法.我不确定该如何去做,但我愿意学习是否有人借给我帮助.谢谢 :).到目前为止,我有这么多. 页面HTML <div id='ContentHeader'> <%= render 'microposts/new' %> <div c
我目前有一个显示微博列表的页面,该页面还包括几个选项卡,例如最近最常讨论的最常见.我想知道如何在不刷新整个页面和通过ajax的情况下呈现微博的不同类型的列表顺序的最佳方法.我不确定该如何去做,但我愿意学习是否有人借给我帮助.谢谢 :).到目前为止,我有这么多.

页面HTML

<div id='ContentHeader'>
<%= render 'microposts/new' %>
<div class='StreamTabContainer'>
<ul class='StreamTabs'>
<li class='StreamTab StreamTabRecent active'>
<%= link_to 'Most Recent', some_path, :remote => true, :class => 'TabText' %>
</li>
<li class='StreamTab StreamTabDiscussed'>
<%= link_to 'Most Discussed', some_path, :remote => true, :class => 'TabText' %>
</li>
<li class='StreamTab StreamTabViews '>
<%= link_to 'Most Views', some_path, :remote => true, :class => 'TabText' %>
</li>
<li class='StreamTab StreamTabRated'>
<%= link_to 'Highest Rated', some_path, :remote => true, :class => 'TabText' %>
</li>
</ul>
</div>
</div>


<div id='ContentBody'>
<div id='ajax'></div>
<%= render 'users/microposts', :microposts => @microposts %>
</div>
看起来你走在正确的道路上.您的视图在快速浏览时似乎是正确的.

只需要完成这项工作的最后几个部分,首先要确保您的控制器可以接受js调用:

# Inside Controller's action
 respond_to do |format|
     format.js
 end

设置完成后,您需要创建javascript以便为每次调用返回客户端.在视图文件夹中创建文件

# app/views/controllerName/actionName.js.erb
 $('#ajax').html("<%= escape_javascript(render(:partial => 'content', :sortingType => 'type')) %>");

上面将允许您呈现显示帖子的部分(在此示例中我将其命名为内容),并将sortedType的局部变量传递给partial.该响应将放在div id =“ajax”的html中(来自您的示例).最后一步是创建视图partial,它将按照您希望的方式对所有帖子进行排序

# app/views/resourceName/_content.html.erb
# Simply create your view partial here, which uses the :sortingType to display your posts in the order you need

希望这会让你更接近你的意图.

编辑:已实现我的引号存在问题.

0

精彩评论

暂无评论...
验证码 换一张
取 消