2016-10-17 40 views
0

我正在爲學習rails的個人項目工作。它是一個任務管理應用程序,任務已經說明,正在進行並完成。經過多天的修改之後,我得到了trello,就像在任務狀態之間工作的拖放功能一樣,但它不會改變狀態。我如何進行Ajax調用?

這裏是我的javascript代碼,

var ready; 
var id = $(this).attr("task_id"); 
ready = function(){ 
    // call sortable on our div with the sortable class 
    $('#sortable1').sortable({ 
     connectWith: ".connected", 
     dropOnEmpty: true 
    }); 
    $('#sortable2').sortable({ 
     connectWith: ".connected", 
     dropOnEmpty: true 
    }); 
    $('#sortable3').sortable({ 
     connectWith: ".connected", 
     dropOnEmpty: true 
    }); 
}; 

$(document).ready(ready); 
/** 
* if using turbolinks 
*/ 
$(document).on('page:load', ready); 

所以,現在當我將它從sortable1掉落物品(這是「做」),以sortable2(這是「進行中」)或sortable3(這是「完成」),我希望它撥打電話,以改變路線

resources :tasks do 
    member do 
     put :change 
    end 
    end 

,改變基於存在params狀態,

def change 
    @task.update_attributes(state: params[:state]) 
    respond_to do |format| 
     format.html { redirect_to tasks_path, notice: 'Task updated' } 
    end 
end 

我是新來的一般的JavaScript和AJAX。關於它應該如何工作的詳細描述,我能做些什麼來更好地解決這個問題,通過鏈接到相應的主題以獲得更好的理解將會有所幫助。

這是我的觀點

<%= link_to 'New Task', new_task_path, class: "btn btn-primary" %> 
<br> 
<br> 
<div class="row"> 
    <div class="col-lg-4 tasks"> 
    <h2 class="text-xs-center">Todo</h2> 
    <ul id="sortable1" class="connected sortable list droptrue" state="to_do"> 
    <% @to_do.each do |task| %> 
    <li draggable="true"> 
    <div class="<%= task.state == 'to_do' ? 'card card-outline-info' : task.state == 'in_progress' ? 'card card-outline-success' : 'card card-outline-warning' %>" style="max-width: 20rem;" task-id="<%= task.id %>"> 
     <div class="card-header action-box"> 
     <div class="text-xs-left"> 
      <strong><%= link_to task.title, edit_task_path(task)%></strong> 
     </div> 
      <div class="btn btn-secondary btn-sm"> 
      <i class="fa fa-play-circle" aria-hidden="true"></i> 
      </div> 
     </div> 
    </div> 
    </li> 
    <%end%> 
    </ul> 
    </div> 

    <div class="col-lg-4 tasks"> 
    <h2 class="text-xs-center">In Progress</h2> 
    <ul id="sortable2" class="connected sortable list droptrue" state="in_progress"> 
    <% @in_progress.each do |task| %> 
    <li draggable="true"> 
    <div class="<%= task.state == 'to_do' ? 'card card-outline-info' : task.state == 'in_progress' ? 'card card-outline-success' : 'card card-outline-warning' %>" style="max-width: 20rem;" task-id="<%= task.id %>"> 
     <div class="card-header action-box"> 
     <div class="text-xs-left"> 
      <strong><%= link_to task.title, edit_task_path(task)%></strong> 
     </div> 
      <div class="btn btn-secondary btn-sm"> 
      <i class="fa fa-play-circle" aria-hidden="true"></i> 
      </div> 
     </div> 
    </div> 
    </li> 
    <%end%> 
    </ul> 
    </div> 


    <div class="col-lg-4 tasks"> 
    <h2 class="text-xs-center">Done</h2> 
    <div> 
    <ul id="sortable3" class="connected sortable list droptrue" state="done"> 
    <% @done.each do |task| %> 
    <li draggable="true"> 
    <div class="<%= task.state == 'to_do' ? 'card card-outline-info' : task.state == 'in_progress' ? 'card card-outline-success' : 'card card-outline-warning' %>" style="max-width: 20rem;" task-id="<%= task.id %>"> 
     <div class="card-header action-box"> 
     <div class="text-xs-left"> 
      <strong><%= link_to task.title, edit_task_path(task)%></strong> 
     </div> 
      <div class="btn btn-secondary btn-sm"> 
      <i class="fa fa-play-circle" aria-hidden="true"></i> 
      </div> 
     </div> 
    </div> 
    </li> 
    <%end%> 

    </ul> 
    </div> 
</div> 

sortable1有 「狀態= 'to_do'」 屬性,sortable2有 「狀態= 'IN_PROGRESS'」 和 「狀態= '做'」。我甚至沒有100%知道爲什麼我添加了狀態屬性,只是想,也許它會幫助,而Ajax調用哈哈。

+2

這是不是真的那麼堆棧溢出應該處理這類問題。有大量的例子可以在線解釋AJAX如何工作。我建議你先從你最喜歡的搜索引擎搜索「AJAX教程」。 –

+1

那裏有大量的ajax教程。要求詳細說明可以在任何這些教程中找到(查閱jquery文檔頁面或mozilla開發人員網絡)是關於stackoverflow的主題。如果遇到更具體的問題,那麼這會更合適。 – scrappedcola

+0

如果有疑問,請嘗試使用Rails指南之一:http://guides.rubyonrails.org/working_with_javascript_in_rails.html –

回答