【发布时间】:2011-05-03 23:26:57
【问题描述】:
我知道有些人会认为我应该将 form_tag 与 :remote=>true 一起使用,但我不知道如何呈现整个 html 输出......
我的问题如下:
我有一个通过 3 个组合框发送集合的表单
<%= 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%>
如果我取消注释此行: 它工作得很好,向我展示了图表,但不是我期望的工作方式。
我检测到使用 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%>
问题是 :remote 没有将我的参数作为数组发送,而是将所有数据作为 1 var :s 发送
【问题讨论】:
标签: ruby-on-rails ruby ajax routing