我无法使用 rails form_tag 表单助手发送对象。我试过以下
Download:<%=form_tag({controller: "orders", action: "csv_downloader",format: "csv"}, method: "post") do%>
<%= hidden_field_tag(:data, @orders_customs_display) %>
<%= submit_tag ("Download CSV"),:class => "btn btn-success download" %>
<% end %>
在视图和控制器中,我有以下内容
def csv_downloader
data=params[:data]
respond_to do |format|
format.csv { send_data data.to_csv }
end
end
在路线中,我有以下内容:
match "csv_downloader", to: "orders#csv_downloader", via: [:post]
如您所见, .to_csv 是用 order.rb 模型编写的自定义函数
def self.to_csv
CSV.generate do |csv|
csv << column_names
all.each do |order|
csv << order.attributes.values_at(*column_names)
end
end
end
当我尝试下载时,出现以下错误。
undefined method `to_csv' for #<String:0x0000000716f8a8>
这本质上是参数是作为字符串而不是作为对象出现的?我该如何纠正这个问题?