触发控制器以显示视图

时间:2012-10-26 22:15:46

标签: javascript ruby ruby-on-rails-3

我有一个使用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>

2 个答案:

答案 0 :(得分: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>');
                }
              }
            }
        });
  });

答案 1 :(得分: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
   }
});