【问题标题】:How to get results from my Rails 3 controller with javascript and passed in parameters?如何使用 javascript 从我的 Rails 3 控制器获取结果并传入参数?
【发布时间】:2011-10-01 20:22:36
【问题描述】:

我正在尝试从基于一些 javascript 变量的控制器中获取一些结果,但我对如何执行此操作一无所知。

到目前为止,我有:

   $.ajax({
        url: '/shops?state=' + state + '&city=' + city , type: 'get', dataType: 'html',
        complete: function(request){
         $("#shop_results").html("<%= escape_javascript(render :partial => 'shop_results') %>");
        }
    });

根据我的 rails 控制台,哪个是命中我的控制器并发送参数但我的控制器:

  def shops
    @maps = Map.where("state LIKE ?", "#{params[:state]}")
    respond_to do |format|
      format.html
      format.js
    end
  end

我的看法:

  <div id="map_canvas" style="width: 980px; height: 400px"></div>

  <div id="shop_results">
    <%= render :partial =>"shop_results"%>
  </div>

并且 shop_results 部分具有显示数组的代码:

  <ol class="shop_list" style="background:blue;">
    <% @maps.each do |m| %>
      <li><% link_to m.shop_name ,"#" %></li>
    <% end %>
  </ol>

Butttt 在我的视图中没有显示部分被调用的地方

【问题讨论】:

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


    【解决方案1】:

    不完全确定您所说的“它没有在控制台中返回任何内容”是什么意思,但是如果您正在执行“喜欢”查询,您不想在其中添加一些 % 符号吗?您是否正在尝试进行州名补全?

    【讨论】:

    • 我修复了这个问题并让我的控制器返回正确的数组,但我仍然无法显示结果。我编辑了我的帖子
    • 好吧,你想把事件处理程序放在success,不完整,首先:) 然后你需要在控制器中渲染部分,然后设置结果DOM元素的结果的 HTML。就目前而言,您正在发出请求,但在请求结束并且控制权返回后,您只是呈现部分内容——不再连接到设置@maps 变量的请求。 (有办法做到这一切。)
    • 好吧,有道理,我如何在控制器中渲染部分?
    • format.html { render :partial =&gt; ... } 等。它没有必须是部分的,但如果不是,您可能需要关闭它的布局。
    • 将其添加到该行会导致我的页面根本不显示任何内容,只是一个白页。我添加了我认为的内容(没有处理谷歌地图 API 的大部分 javascript)。我应该使用 format.js 来调用一些 jquery 来添加内容吗?我不确定如何使用数组来做到这一点。我也对这个问题添加了我的观点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多