2016-05-24 5 views
0

現在、名前と電話番号を使用する単純なドロップダウンリストを作成しようとしています。選択したオプションをクリックすると、ページ上の子オブジェクトあなたがAjaxを使って入力した選択肢のオプションです。ajaxでレールの一部を更新する

つまり、ドロップダウンメニューからUser1 | 555-555-5555を選択すると、2番目の部分的な部分にあるUser1のすべての報告権限のリストが返されます。

私はこれが簡単な質問だと知っていますが、私はそれを動作させるためにJavaScriptを書く方法はあまりよく分かりません。

class Admins::ReportapprovalsController < ApplicationController 

    def index 
    @reportapprovals = Reportapproval.all(table:params[:table], per_table: 4) 
    end 

    def show 
    @reportapproval = Reportapproval.find(params[:id]) 
    end 
end 

第二リスト部分...

<select id="adminDropDown" onchange= "chooseManager();" class="form-control"> 
    <% if current_admin.manager_approvals.blank? %> 
    <option>No Sub-Accounts added, Add one today!</option> 
    <% elsif current_admin.manager_approvals.all? { |ma| ma.manager_approved == false }%> 
    <option>No Sub-Accounts approved yet!</option> 
    <% else %> 
    <% current_admin.manager_approvals.where(manager_approved: true).each do |ma| %> 
     <option value="<%= ma.id %>"><%= ma.manager_company %>&nbsp;|&nbsp;<%= number_to_phone(ma.manager_phone) %></option> 
    <% end %> 
    <% end %> 
</select> 

私のコントローラは、このようになります..:

ドロップダウンビュー:

はここで、部分的、ドロップダウンリストのための私のコードです。

report_list.html.erb 
.... 
     <tbody> 
     <% if @selected_manager_approval.reportapprovals.blank? %> 
     <tr> 
      <td width="100%">No reports available</td> 
     </tr> 
     <% else %> 
      <% @selected_manager_approval.reportapprovals.each do |ra| %> 
       <% if ra.report.present? %> 
       <tr> 
        <td width="25%"><%= ra.tenant_last_name.truncate(17) %></td> 
        <td width="25%"><%= number_to_phone(ra.tenant_phone) %></td> 
        <td width="25%"><%= ra.date_approved %></td> 
        <td width="25%"><%= link_to "View Report", {:controller => "admins/reports", :action => "show", :id => ra.report_id}, :method => :get, class: "btn-default btn-sm" %></td> 
       </tr> 
       <% end %> 
      <% end %> 
    <% end %> 
    </tbody> 

私のjsファイルは...

$(chooseManager() { 
    $('#adminDropDown')change(chooseManager() { 
    value = $(this).val() 
    $.post("admins/reportapprovals/manager_select", {manager_id: value}, chooseManager(data)); 
    }) 
}) 

UPDATE-これは、ファイルがどのように私は、ドロップダウンメニューの中の選択肢の一つとリフレッシュ第二部分を選択します

SyntaxError: [stdin]:6:5: unexpected (

私は、このエラーを与えるJS?今すぐ選択された値は、インスタンスIDを "@selected_manager_approval"として2番目の部分に渡し、ページの2番目の部分だけを自動的にリフレッシュする必要がありますか?私はこれをどのようにするべきですか?お使いのコントローラで

+1

ドロップダウンの値に? – Prity

+0

はい、まさに私がやろうとしていることです。私が読んでいるものに基づいて、Ajaxを使う必要があるのは、ドロップダウンが選択された後にデータベースを呼び出すからです。 – SupremeA

答えて

2

は、このようなアクションを追加:アプリ/ビュー/管理者/ report_approvalsで

class Admins::ReportapprovalsController < ApplicationController 

    def index 
    @reportapprovals = Reportapproval.all(table:params[:table], per_table: 4) 
    end 

    def show 
    @reportapproval = Reportapproval.find(params[:id]) 
    end 

    def manager_select 
    @selected_manager_approval = ManagerApproval.find(params[:manager_approval_id])  
    end 
end 

はmanager_select.js.erbを作成し、そのファイルに次のコードを追加します。

// reportlist_wrapper_div_id is just an example you have to replace this with id of the div where you are rendering report_list partial. 

$('#reportlist_wrapper_div_id').html('<%= escape_javascript render(:partial =>"report_list")%>'); 
このようなあなたのchooseManager機能を変更

:あなたはMANAGER_IDが等価である場合「report_list.html.erb」はReportapprovalレコードをリフレッシュする必要があることをあなたが望む、「adminDropDown」の変化に意味

chooseManager = -> 
    managerApprovalId = $(this).val() 
    $.ajax 
    type: 'POST' 
    url: 'admins/reportapprovals/manager_select' 
    data: manager_approval_id: managerApprovalId 
    return 
+0

私はこれを行いましたが、これはレールであるため、 '' '' SyntaxError:[stdin]:8 :1:予約語 'function'''''少し読んだ後、私はこの関数をcoffeescriptで必要としますが、どうすれば変更できますか? – SupremeA

+0

私はこの機能を変更しました。今すぐチェックしてください – Prity

+0

問題が解決しない場合は、このmanager_select.js.erbファイルがassetsフォルダに正しく入りますか?ビューではない? – SupremeA

関連する問題