2016-06-06 2 views
0

현재 사용자에게 링크 된 리드를 보여주는 테이블이 있습니다. 이 테이블에서 필자는 드롭 다운으로 가지고 싶은 "상태"필드를 가지고 있습니다. 이 드롭 다운에서 다른 상태를 선택하면 '저장'버튼을 클릭하지 않고 해당 상태의 상태를 즉시 저장합니다.레일즈 - 변수를 드롭 다운하고 저장하지 않고 속성을 업데이트하십시오.

누군가가이를 구현하는 데 도움을 줄 수 있습니까? 사전에

감사합니다, T

UPDATE : @lead을 인식하는 것 같지 수 있지만 나는 순간에이 스크립트를 사용하고 있습니다. 당신이 jquery``이 작업을 수행 할 수 있습니다

<table border="0" cellspacing="0" cellpadding="0"> 
    <thead> 
    <tr> 
     <th class="col">Id</th> 
     <th class="col">Fullname</th> 
     <th class="col">Email</th> 
     <th class="col">Phone</th> 
     <th class="col">Status</th> 
     <th class="col">Created</th> 
     <th class="col"></th> 
    </tr> 
    </thead> 
    <tbody> 
    <% @leads.each do |lead| %> 
    <tr class="<%=cycle('odd', 'even') %> location_row" id="lead_row" data-id="<%= lead.id%>" data-status="<%= lead.status %>"> 
     <td><%= lead.id %></td> 
     <td><%= lead.fullname %></td> 
     <td><%= lead.email %></td> 
     <td><%= lead.phone %></td> 
     <td><%= select_tag :status, options_for_select(Lead.statuses.map {|k, v| [k.humanize.capitalize, v]}), :class => "lead_status" %></td> 
     <td><%= link_to (fa_icon "pencil-square-o "), edit_lead_path({:id => lead.id, :first_last_name => lead.first_last_name}), :title => 'Edit Lead', :class => "action-button" %></td> 
    </tr> 
    <% end %> 
    </tbody> 
</table> 

<script> 
    $(function() { 
    $('.lead_status').on('change', saveStatus); 
    function saveStatus() { 
     var newStatus = $(this).val(); 
     var table_row = $(this).closest('tr'); 
     var currentStatus = table_row.attr('data-status'); 
     var leadId = table_row.attr('data-id'); 
     if (!(newStatus == "" && newStatus == currentStatus)) { 
     $.ajax({ 
      type: "POST", 
      url: "<%= update_lead_status_path({:id => @lead.id}) %>" 
      data: {status: newStatus, lead_id: leadId}, 
      success: function(data) { 
      table_row.attr('data-status', newStatus); 
      } 
     }); 
     } 
    } 
    }); 
</script> 
+0

:

<table border="0" cellspacing="0" cellpadding="0"> <thead> <tr> <th class="col">Id</th> <th class="col">Fullname</th> <th class="col">Email</th> <th class="col">Phone</th> <th class="col">Status</th> <th class="col">Created</th> <th class="col"></th> </tr> </thead> <tbody> <% @leads.each do |lead| %> <tr class="<%=cycle('odd', 'even') %> location_row" id="lead_row" data-id="<%= lead.id%>"> <td><%= lead.id %></td> <td><%= lead.fullname %></td> <td><%= lead.email %></td> <td><%= lead.phone %></td> <td><%= select_tag :status, options_for_select(Lead.statuses.map {|k, v| [k.humanize.capitalize, v]}), :id => "lead_status" %></td> <td><%= link_to (fa_icon "pencil-square-o "), edit_lead_path({:id => lead.id, :first_last_name => lead.first_last_name}), :title => 'Edit Lead', :class => "action-button" %></td> </tr> <% end %> </tbody> </table> <script> $(function() { $('#lead_status').on('change', saveStatus); function saveStatus() { var newStatus = $(this).val(); var currentStatus = <%= @lead.status %> // replace @lead with your object of Lead class. var leadId = <%= @lead.id %> if (!(newStatus == "" && newStatus == currentStatus)) { $.ajax({ type: "POST", url: "<%= update_lead_status_path({:id => @lead.id}) %>" data: {status: newStatus, lead_id: leadId}, success: function(data) { } }); } } }); </script> 

답변

1

이 솔루션을 사용해보십시오. 당신은 다른 상태를 선택할 때`onchange` 메소드를 호출 할 수 있고 사용자 Ajax는 데이터베이스에 그 값을 저장하기 위해 hit합니다.
+0

안녕하세요, 양식을 사용하여 드롭 다운을 마무리해야합니까? 내 상태 필드는 "열거 형"으로 구성되어 있으므로 양식없이 값을 나열하는 방법을 모르겠습니다. –

+0

아니요, 다음과 같이 할 수있는 양식이 필요 없습니다. <% = select_tag : status, options_for_select 안녕하세요, 귀하의 답변 + 의견을 사용하고있는보기 및 스크립트로 내 질문을 업데이트했습니다. Lead.statuses.map {| k, v | [k.humanize, k]}) %> – Prity

+0

안녕하세요. 나는 거의 다 왔다고 느낀다. 그러나 모든 순간에 다른 리드를 가진 테이블을 생각할 때 나는이 순간에 그것을 인식하지 못한다. 행의 리드 ID를 스크립트에 전달하는 방법에 대한 팁은 무엇입니까? –

관련 문제