当前位置: 首页 > 面试题库 >

Rails:通过Ajax渲染部分

韶宏邈
2023-03-14
问题内容

我有一个带有选项卡的页面,我想在单击选项卡时仅通过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

问题答案:

请参阅我对上一篇文章的回答。这将为您提供一个在Rails中的AJAX想法:完成模型#更新后显示模型#新表单

您可以做的是在操作中呈现一个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)


 类似资料:
  • 问题内容: 对于那里的MVC专家来说,这应该相对简单,但我仍在学习中。 简单来说,我有一个视图不是强类型的。 在此视图上,我有一个文本框,使用jQuery的AutoComplete对其进行了扩展 当用户在文本框中键入内容时,自动完成功能将对Controller进行AJAX调用,该Controller会调用存储过程,并返回具有2个属性的JSON记录集合: ID (商品的标识符) 名称 (商品名称)

  • 问题内容: 我建立了一个复合组件,看起来像这样: 组件正确显示当前标签。 现在,当执行该动作时,什么也不会发生。但是,当我将Postfix添加到组件中的ID时,它可以正常工作(请参见下文)。 并使用后缀在render中定义ID: 有人可以向我解释为什么仅当我在ID中添加后缀时才起作用吗? 问题答案: 这个问题实际上有两个方面。 第一个问题是,实际上指定复合部件的ID 本身 的。默认情况下,HTML

  • 问题内容: 用AJAX响应提交的表单动态呈现页面似乎很常见。其他类似问题都没有集中于如何以一般方式进行此操作。 我可以找到的关于该主题的最佳博客文章位于:http : //www.gotealeaf.com/blog/the- detailed-guide-on-how-ajax-works-with-ruby-on- rails 问题:如何编写Rails应用程序的代码,以便在提交表单或单击链接时

  • 问题内容: 我检查了这个问题,它解决了我的最初问题。但是我不希望仅当用户单击链接时才显示部分视图,我希望在页面加载时显示部分视图,并且可能在加载部分视图时显示进度指示器。 如何实现? 非常感谢您阅读本文。 问题答案: 如果要加载页面,然后通过ajax加载部分视图,则可以创建一个执行以下操作的对象: 然后在您的页面中执行以下操作:

  • 问题内容: 我有一种通过remote => true将行添加到数据库的表单。然后,我想将新数据追加到表中,但是无法获取正确的视图来呈现。 到目前为止,它正在为新条目渲染整个show.html.erb页面,但是我想布局一个最小版本以作为添加。有没有一种快速的方法来告诉我的控制器,将其插入数据库后呈现什么视图?我想渲染我的部分名为_newly_added.html.erb 我的控制器 谢谢!! 编辑

  • 问题内容: 我在MVC应用程序中有此标记。 当它运行时,IngredientsListControl.ascx在浏览器中显示为新页面,并且不会更新Ingredientlistdiv。 这是我的控制器动作 我在这条线上做对了吗? 这就是我将控件呈现到div中的方式,以便它不会加载新页面。 马尔科姆 问题答案: 使用此功能时: …您应该注意,这与 它不会引发onsubmit事件,并且不会调用MVC的A