在rails中使用Ajax调用更改状态

时间:2014-07-03 20:23:27

标签: javascript jquery ruby-on-rails ajax state

单击某个项目上的“完成”后,我希望该项目从待处理部分切换到我表格的已完成部分。完整的作品,但我如何用ajax / js完成这个脚?我的ajax全都搞定了,我只是不确定显示状态变化所需的javascript,如果有人能指出我正确的方向。 :)

todo_items_controller.rb

def complete
  @todo_item = @todo_list.todo_items.find(params[:id])
  @todo_item.complete!
  respond_to do |format|
    format.html { redirect_to todo_list_todo_items_url }
    format.js
  end
end

index.html.erb

<table id="todo-items">
  <% if @todo_items.any? %>
    <% @todo_items.pending.each do |item| %>
      <%= render 'todo_items/todo_item', todo_list: @todo_list, item: item %>
    <% end %>

  <% if @todo_items.completed.any? %>   
    <tr><td><h4>Completed</h4></td></tr>
    <% @todo_items.completed.each do |item| %>
      <%= render 'todo_items/completed_todo_item', todo_list: @todo_list, item: item %>
    <% end %>
  <% end %>
<% end %>
</table>

_completed_todo_item.html.erb

<tr height="30px">
  <td><%= time_ago_in_words(item.completed_at) + ' ago' %></td>
  <td><%= item.content %></td>
  <td><%= link_to 'X', [@todo_list, item], method: :delete, data: { confirm: "Delete?" } %></td>
</tr>

complete.js.erb&gt;&gt;目前只是将完成的项目放在表格的顶部

$('#todo-items tr:first').after('<%= j render 'todo_items/completed_todo_item', todo_list: @todo_list, item: @todo_item %>');

但我怎么会把它移到completed.any?迭代?

0 个答案:

没有答案