如何从用户那里获取输入并将其传递回ruby中的控制器?

时间:2016-07-28 02:25:11

标签: ruby-on-rails

我已经能够创建一个用户可以单击的链接,该链接将触发将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进行下载?我需要改变什么,或者我缺少/忽视什么才能让它发挥作用?

非常感谢。

0 个答案:

没有答案