在轨道上的红宝石中弹出窗口

时间:2012-11-26 11:08:38

标签: jquery jquery-ui ruby-on-rails-3.2

我有一个任务是在点击编辑按钮时弹出新窗口。但我无法得到任何解决方案。我有一个班级学生和三个属性名称,年龄和分支。我通过脚手架创建了视图。分配给我的任务是在点击编辑按钮时,应该有一个弹出窗口来编辑这些属性。我怎么能这样做?请帮忙。我想像jTable这样做。 这是我的index.html.erb

<table class="tablelist">
    <caption>Listing students</caption>
  <tr>
    <th>Name</th>
    <th>Age</th>
    <th>Branch</th>
    <th></th>

    <th></th>
  </tr>
<% @students.each do |student| %>
  <tr>
    <td><%= student.name %></td>
    <td><%= student.age %></td>
    <td><%= student.branch %></td>

    <td><%=link_to (image_tag("edit.png", :alt => 'Edit'), edit_student_path(student)) %></td>
    <td><%= link_to 'Destroy', student, :method => :delete, :data => { :confirm => 'Are you sure?' } %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New Student', new_student_path %>

这个学生班的控制器是

def list
    @students = Student.all
    @jtable = {'Result' => 'OK','Records' => @students.map(&:attributes)}

    respond_to do |format|
      format.html # index.html.erb
      format.json { render :json => @jtable}
    end
  end

index.html.erb是

<html>
    <head>
        <%=stylesheet_link_tag "jtable_blue","http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css",:media => "all" %>
        <%= javascript_include_tag "jquery-1.8.3.min","http://code.jquery.com/ui/1.9.1/jquery-ui.js","jquery.jtable.min"%>
<script type="text/javascript">
    jQuery.noConflict();
    jQuery(document).ready(function () {
        jQuery('#StudentTableContainer').jtable({
            title: 'StudentList',
            actions: {
                listAction: '/students/list',
                createAction: '/students/newstudent',
                updateAction: '/students/edit',
                deleteAction: '/students/destroy'
            },
            fields: {
                id: {
                    key: true,
                    create: false,
                    edit: false,
                    list: false
                },
                name: {
                    title: 'name',
                    width: '40%'
                },
                sex: {
                    title: 'sex',
                    width: '20%'
                },
                branch: {
                    title: 'branch',
                    width: '30%'
                }

            }
        });

       jQuery('#StudentTableContainer').jtable('load');
    });
</script>
</head>
<body>

    <div id="StudentTableContainer">
    </div>
</body>
</html>

routes.rb是

match 'students/list' => 'students#list', :as => :list

2 个答案:

答案 0 :(得分:2)

如果不使用弹出式窗口,您使用弹出式模式(如Twitter Bootstrap中包含的模式)? Rails不处理弹出窗口,但您可以使用javascript生成弹出窗口。还有TopUpprototype-window

答案 1 :(得分:1)

没有rails3方式处理弹出窗口。您必须使用javascript库(jqueryui或其他)并使用该库创建弹出窗口。 Rails只会帮助您为弹出窗口生成HTML,您将传递给库方法。

换句话说,您将有一个按钮,它将向rails应用程序发送请求。 rails应用程序将生成javascript以及弹出式html并将其发送回客户端以供执行。实现这个的确切方法取决于您正在使用的JS库,您可以对此主题进行一些研究。