ruby-on-rails – Rails:通过Ajax渲染部分

我有一个带有选项卡的页面,我想在单击选项卡时通过ajax呈现不同的部分.我有一些代码,但我不认为这是最有效的方式.我希望是否有人可以帮助我使用已经存在的代码,或者如果有更简单的方法我会非常感激.谢谢!

HTML标签

<li class='StreamTab StreamTabRecent active'>
<%= link_to 'Most Recent',mostrecent_schools_path,:remote => true,:class => 'TabText' %>
</li>


<div id='ContentBody'>
<div id='ajax'></div>
<%= render 'users/microposts',:microposts => @microposts %>
</div>

学校管理员

class SchoolsController < ApplicationController  
  def mostrecent
    @school = School.find_by_slug(request.url.gsub('http://localhost:3000/','')).id
    @microposts = @user.microposts.order('created_at DESC').paginate(:per_page => 3,:page => params[:page])
     respond_to do |format|
      format.html
      format.js
     end
  end
end

最近的JS

$("#ContentBody").html('<%= escape_javascript(render :partial => "users/microposts" )%>');

路线

resources :schools do
    collection do
        get :mostrecent
    end
  end

解决方法

请参阅我之前的帖子的答案.这会给你一个想法 AJAX in Rails: Show model#new form after completing a model#update

你可以做的是在动作中渲染一个json并将部分传递给json.

def mostrecent
  @school = School.find_by_slug(request.url.gsub('http://localhost:3000/','')).id
  @microposts = @user.microposts.order('created_at DESC').paginate(:per_page => 3,:page => params[:page])
  respond_to do |format|
    format.json { render :json => {:success => true,:html => (render_to_string 'users/microposts')} }
    format.html { }
  end
end

您可以访问js中的json(即javascript / coffeescript文件,例如mostrecent.js或mostrecent.js.coffee)并替换当前元素.

$('.TabText').live 'ajax:success',(event,data) ->
  $('#ContentBody').html(data.html) if(data.success == true)

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...