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>
これは本質的に、引数がオブジェクトではなく文字列として来ているということですか? これを修正するにはどうすればよいですか?