【问题标题】:Show page view as a jQuery-UI dialog将页面视图显示为 jQuery-UI 对话框
【发布时间】:2011-12-13 08:53:10
【问题描述】:

我正在开发一个 Rails v2.3.2 应用程序。一个非常基本的 Rails 结构实现如下:

我有一个控制器

class SchoolController < ApplicationController
  ...

  def check_teachers
    @school = School.find params[:id]
    @teachers = @school.teachers
  end

end

我在route.rb中的路线定义:

map.check_teachers, '/school/check_teachers/:id' :controller => :school, :action => :check_teachers

链接点击会触发视图:

link_to 'Check teachers', check_teachers_path(:id => @school.id)

check_teachers的观点check_teachers.html.erb

<div>
Hello 
<%= render :partial => 'show_teachers'%>
</div>

我希望 链接单击 将上述视图显示为 jQuery-UI 对话框 而不是页面视图。如何做到这一点??

----更新-----

请查看我对@plaes 答案的评论。

【问题讨论】:

    标签: jquery ruby-on-rails ruby-on-rails-3 jquery-ui ruby-on-rails-3.1


    【解决方案1】:

    您缺少用于在check_teachers.html.erb 中设置对话框的 jQuery UI 代码:

    <script>
    $(function() {
      $('#dialog').dialog();
    });
    </script>
    <div id='dialog'>
    Hello 
    <%= render :partial => 'show_teachers'%>
    </div>
    

    此外,您需要包含所需的 jQuery 依赖项(jQuery 和 jQuery-UI)。这留作练习......

    【讨论】:

    • 我忘了提到我已经设置了所有必需的 js 库。所以,在我的情况下,这不在考虑范围内。我实际上在发布之前尝试过你的方式,因为我有 route.rb 配置,链接点击将始终呈现一个新的空白页面,然后弹出对话框位于空白页面的顶部,但我希望它显示在以前的原始页面上页面。
    • 好的,那么您需要使用 AJAX 请求加载对话框。
    【解决方案2】:

    默认情况下,它呈现一个 html 页面。 在关闭控制器之前添加此代码

    respond_to do |format|
      format.js {}
    end
    

    将视图重命名为 check_teachers.js.erb 在这个文件中,包含你需要的 jquery。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-05
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-04
      • 2019-01-06
      • 1970-01-01
      相关资源
      最近更新 更多