1

jsを使用しているビューにドロップダウンがあります。選択したアイテムをドロップダウンからコントローラーに渡します。コントローラー内で、ドロップダウンから選択したアイテムを使用してクエリを実行し、いくつかのレコードを抽出しました。ここで問題となるのは、クエリ結果を表示して表示できないことです。基本的に、コントローラーをトリガーしてビューに表示することはできません。どんな助けでも大歓迎です。

データをコントローラーに渡すjsは次のとおりです。

<script type="text/JavaScript">
$(function(){
    $('.defined_call').bind('change', function(){
        alert($(this).val());
        $.ajax({
            url: "<%= changeowner_path %>",
            data: { my_str: $(this).val() }
        });
    });
});
</script>

<%= select_tag "dropdown_cases", options_for_select(@ownerlist),{:id=>"defined_Id",:class 
=> "defined_call'}  %>

コントローラは次のとおりです。

class ReassignsController < ApplicationController
  def changeowner
    i=0
    $myarr=[]
    ownerl = Transaction.owner#declaredin model
    @ownerlist=ownerl.collect { |c| [ c, c ] }#make it for dropdown
    value=params[:my_str]#return value from dropdown
    $value1=value.to_s#make it for owner table
    @owner_records=Transaction.where(:owner => $value1) 

    ===> I would like to display to the view?
  end
end

これが私が使用しているビューです:

<table class="table table-condensed" id="sortTableExample">
<tr>
<th style="text-align:center">Book Name</th>
<th style="text-align:center">Owner</th>

</tr>

<% @owner_records.each do |arr_data| %>
<tr>
<td style="text-align:center"><%= arr_data.book%></td>
<td style="text-align:center"><%= arr_data.owner%></td>
</tr>
<% end %>
</table>
4

2 に答える 2

1

ジョー、次のようなことを試してください。

  $('.defined_call').change(function() {
        $.ajax({
            url: "<%= changeowner_path %>", type: 'get', 
            data: { my_str: $(this).val() },
            dataType: 'json',
            processData: false,
            success: function(data) {
              if (data == "") {
                alert('No Results');
              }
              else {
                var jsonObj = eval( data );
                var count = jsonObj.transactions.length;
                for (var i = 0; i<count; i=i+1) {
                  $('#sortTableExample').append('<td style="text-align:center">' + jsonObj.transactions[i].book + '</td><td style="text-align:center">' + jsonObj.transactions[i].owner + '</td>');
                }
              }
            }
        });
  });
于 2012-10-26T23:05:05.253 に答える
0

Railsはビューをレンダリングしていますが、クライアント側(javascript)では何もしていません。

ajax呼び出しで、成功時に何かをしたい:

$.ajax({
   url: "<%= changeowner_path %>",
   data: { my_str: $(this).val() },
   success: function(data) {
       $('#myDiv').html(data); // This is writing the returned view from rails to myDiv
   }
});
于 2012-10-26T23:02:43.057 に答える