2012-10-26 80 views
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> 

回答

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>'); 
       } 
       } 
      } 
     }); 
    }); 
+0

谢谢。基本上我试图做的是如下: 1.通过查看的下拉列表中选择的项目控制器 2.内部控制器运行查询,并使用Where条件中的(下拉)选定项目 3.通过查询结果显示在视图内(与步骤1相同的视图)以显示 我发布的解决方案确实覆盖了第1步和第2步,但我缺少第3步来填充表的视图。如何使用您的解决方案触发显示表? – joe

+0

嘿乔,这一步是应该改变桌子的那一步。你有没有在github上的项目..我可以尝试为你看看它。 $('#sortTableExample')。append(''+ jsonObj.transactions [i] .book +'' jsonObj.transactions [i] .owner +''); – Abram

+0

乔,尝试把警报(jsonObj.transactions [i] .book);并查看代码是否工作。如果是,那么我们可以帮助您进行桌面更新。 – Abram

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 
    } 
}); 
+0

谢谢你这么多。我会尝试你的解决方案 – joe

相关问题