我已经能够创建一个用户可以单击的链接,该链接将触发将csv文件下载到用户的计算机。
我的下一个障碍是有两个字段用于输入开始日期和结束日期。当用户填写这些字段并单击下载按钮时,我需要编辑输入到下载的csv中的内容,只包含这两个日期之间值的项目。
我的代码现在位于html.erb:
中 <% content_for :javascript do %>
<script type="text/javascript">
ShopifyApp.ready(function(){
ShopifyApp.Bar.initialize({
title: "Home",
icon: "<%= asset_path('favicon.ico') %>"
});
});
</script>
<% end %>
<h1>Orders</h1>
<form>
Edit date information to download specific range. Default is all available orders. <br>
Start Date: <input type="date" name="start_date" value="MM/DD/YYYY">
End Date: <input type="date" name="end_date" value="MM/DD/YYYY"> <br>
Download: <%= link_to "CSV", orders_path(format: "csv") %>
</form>
<table>
#code for generating a table, too much to just paste here
</table>
下载后的link_to:我知道下载csv的工作正常,但现在无法弄清楚如何获取两个日期信息。
我在控制器内部有一个respond_to:
@csv_order = Order.new
respond_to do |format|
params.each { |key, value| puts "#{key} is #{value}" }
format.html
format.csv { render text: @csv_order.to_csv(@CSV_data, params[:start_date], params[:end_date]) }
end
根据我能找到的最佳信息,用户输入的数据应该在params散列中返回,我已经添加了如上所示。但是创建了params.each以检查开始和结束日期字段是否存在,它们不存在。
我还发现了有关将值从html.erb直接传递给order.rb中的方法的信息。我只是复制并粘贴了示例,只是为了测试它的工作情况并从那里进行编辑。但是,表单项甚至不会显示在网页上。这是最令人沮丧的,因为它可能是完全无聊的,我忽视或无知。
复制的代码放入html.erb:
<% form_tag(:action => 'search') do %>
<%= text_field_tag "SearchInput" %>
<%= submit_tag %>
<% end %>
使用order.rb中的搜索方法:
def search
puts "testing"
puts params["SearchInput"]
end
我的问题是:如何获取用户输入的信息(start_date和end_date)以供我的代码用来编辑哪些订单放入csv进行下载?我需要改变什么,或者我缺少/忽视什么才能让它发挥作用?
非常感谢。