2017-12-27 435 views
0

我有一個模型Project和一個模型ProjectLine。 Project爲ProjectLine嵌套了屬性。Rails按鈕來更新嵌套屬性的狀態

在我的項目中顯示視圖我列出了項目信息和任務列表。

<% @project.project_lines.each do |project_line| %> 

<%= project_line.user.name %> 
<%= project_line.description %> 
<%= number_to_currency project_line.amount, precision: 0, unit: "USD ", separator: ",", delimiter: "," %> 
<%= project_line.task_status_name %> 

<% end %> 

使用cocoon在項目表單上創建任務。

在上面的視圖中,狀態名稱之後,我想爲每個改變狀態的項目行都有一個按鈕。

到目前爲止我找到的解決方案是創建一個表單。

<%= semantic_form_for @project_line do |f| %> 

    <%= f.hidden_field :status, :value=>2 %> 
    <%= f.submit 'ACCEPT', class: 'btn btn-primary btn-md' %> 

<% end %> 

我試圖將其放置在部分項目上,並調用它的循環<% @project.project_lines.each do |project_line| %>,但我不能得到它的工作。

如何獲得每個項目行的按鈕以更改項目行狀態?

+0

將窗體指向控制器動作,並向其傳遞所需的ID以更改狀態。使用Ajax更新您的視圖。 –

+0

感謝您的評論。你能提供代碼示例嗎? – Catmal

回答

0

如果我明白你的要求,財產以後沿

視圖

<% @project.project_lines.each do |project_line| %> 

    <%= project_line.user.name %> 
    <%= project_line.description %> 
    <%= number_to_currency project_line.amount, precision: 0, unit: "USD ", separator: ",", delimiter: "," %> 
    <%= project_line.task_status_name %> 
    <button class="accept_to_server">Accept</button> 
<% end %> 

的JavaScript(jQuery的)

$.('.accept_to_server').on('click', function(){ 
    $.ajax({ 
    url: 'path/to/accept/route' 
    method: 'PUT' // or what method your route uses 
    data: {data:you, need:here} 
    }).done(function(data){ 
    // update your view 
    }).fail(function(){ 
    // something went wrong 
    }); 
}; 

希望此行有助於出來。