Rails4:Ajax,如何在追加期间增加行号

时间:2015-12-10 21:06:40

标签: ruby-on-rails-4

我想显示带有行号的类别表中的所有类别。 因此,如果某个类别有3行,则会显示

  1. catdfd
  2. catgrg
  3. categterg
  4. 当我点击添加时,它应该增加行号(4,5 ...)。我曾尝试使用rails _counter变量,但它不适用于Ajax。

    index.html.erb

    <table class="table table-bordered">
      <thead>
        <tr>
          <th >No</th> <--------------No column
          <th >Title</th>
          <th ></th>
    
        </tr>
      </thead>
    
      <tbody id="appendcat">
    <%= render partial: @category %>
    
    
    </tbody>
    </table>
    

    _category.html.erb

     <tr id="caterow_<%=category.id%>">
            <td><%=%></td> <--------------here??
            <td><%=category.parent_title %>  </td>
            <td><%= link_to("Show",   category,:class =>'') %> &nbsp;
    <%= link_to("Edit",   edit_category_path(category),:class =>'') %> &nbsp;
    <%= link_to("Delete", category_path(category), method: :delete, data:{confirm: 'Are you sure?'}, remote: true )%> &nbsp;  
    </td>
    
    </tr>
    

    create.js.erb

    $('#appendcat').append('<%= j render(@category)%>');
    

    Ajax运行正常。我可以添加一个类别,它会显示新类别而不刷新。但是,只要我在_category.html.erb中添加<%=category_counter+1%>,它就无效。

    它只需要动态增加行号。 有可能吗?

2 个答案:

答案 0 :(得分:1)

<强> index.html.erb 假设您将从索引操作中获取@categories变量中的所有现有类别。

<table class="table table-bordered">
  <thead>
    <tr>
      <th >No</th>
      <th >Title</th>
      <th ></th>
    </tr>
  </thead>
  <tbody id="appendcat">
    @categories.each_with_index do  |category, index|
        <%= render partial: category, locals: { category: category, counter: index+1 }  %>
      end
  </tbody>
</table>

<强> _category.html.erb

<tr id="caterow_<%=category.id%>">
  <td><%= counter %></td>
  <td><%=category.parent_title %>  </td>
  <td>
    <%= link_to("Show", category,:class =>'') %> &nbsp;
    <%= link_to("Edit", edit_category_path(category),:class =>'') %> &nbsp;
    <%= link_to("Delete", category_path(category), method: :delete, data:{confirm: 'Are you sure?'}, remote: true)%> &nbsp;  
  </td>
</tr>

<强> create.js.erb 假设您将从创建操作中获取@category变量中的新类别。

$('#appendcat').append('<%= j render partial: 'category', locals: { category: @category, counter: Category.count } %>');

希望它有所帮助!

答案 1 :(得分:0)

你可以做这样的事情

last = parseInt($("#appendcat tr:last td:first").text() );
$('#appendcat').append('<%= j render(@category)%>');
$("#appendcat tr:last td:first").text( last + 1);