RubyOnRails使用form_remote_tag发送params

时间:2011-05-03 23:26:57

标签: ruby-on-rails ruby ajax routing

我知道有些人会认为我应该使用form_tag:remote => true,但我不知道如何渲染整个html输出....

我的问题如下:

我有这个通过3个combox发送集合的表单

<%= form_remote_tag :url => report_client_reports_path, :update => :graphic do%>
<%#= form_tag reporte_client_reports_path%>
 <p><%= label_tag :supermercados %>
 <%=select_tag "supermercados[]", options_from_collection_for_select(@supermercados, "id", "name"),{:multiple=>true, :id => "supermarkets"}%>
 </p>

  <p><%= label_tag :cortes %>
<%=select_tag "cortes[]", options_from_collection_for_select(@cortes, "corte_real","cuts"),{:multiple=>true, :id => "cortes"}%>
 </p>

 <p><%= label_tag :productos %>
 <%= select_tag "productos[]", options_from_collection_for_select(@productos, "id", "name"),{:multiple=>true, :id => "products"}%>
</p>


<p><%= submit_tag 'Send' %></p>
<%end%> 

如果我取消注释这一行:     &lt;%#= form_tag reporte_client_reports_path%&gt; 它运作良好并向我呈现图表,但不是我期望的工作方式。

我已经检测到使用form_remote_tag,它会发送所有变量值及其值,不知道为什么我的控制器只能看到每个变量的一个值。

这是控制器:

  @super = params[:supermarkets]
  @superm = []
  @super.each do |s|
    @superm << Company.find(s).abbr
  end

  @cuts = params[:cuts]
  @prods = params[:products]
  @cortesGraph = []

  @cortess.to_a.each do |c|
   @cortesGraph  << "#{RawData.find_by_real_cut(c).cuts}"
  end 

@ superm,@ cuts和@products对象在数组中没有收到超过1个值,是路由问题还是我在form_remote_tag中遗漏的选项?


并简单地更新,实际上仍在发生的是:

本作品:

<%= form_tag reporte_client_reports_path do%>

这不是:

<%= form_tag reporte_client_reports_path,:remote=>true do%>

问题是:远程不发送我的参数作为数组发送所有数据为1 var:s

1 个答案:

答案 0 :(得分:0)

我以功能方式解决了,但在我的控制器中可能有一些非常奇怪的东西:

 if request.xhr?
    @super = params[:supermercados].to_s.split(",")
    @cortess = params[:cortes].to_s.split(",")
    @prods = params[:productos].to_s.split(",")
end