Ruby使用datepicker输入传递param

时间:2012-11-21 18:30:34

标签: javascript jquery ruby-on-rails ruby

我试图通过Rails中的button_to将值传递到索引页面,而是调用POST并在数据库中创建一个新的null值。我有这个:

在/app/views/index.html.erb

<script>$(function() {
  $("#date").datepicker();
});</script>
<% require 'date' %>
<h1>Listing reports for the week of <%= params[:datepicker] || DateTime.now.strftime('%m/%d/%Y') %></h1>

<%= form_tag reports_path do %>
  <input type="string" id="date" name="date" />
  <%= submit_tag "Select Date", :method => "get" %>
<% end %>

在/app/controllers/reports_controller.rb

  def index
    @date = params[:date] || DateTime.now.strftime('%m/%d/%Y')
    @reports = Report.where(:entrydate => Date.strptime(@date, '%m/%d/%Y').beginning_of_week..Date.strptime(@date, '%m/%d/%Y').end_of_week)

    respond_to do |format|
      format.html # index.html.erb
      format.json { render :json => @reports }
      format.js
    end
  end

在/config/routes.rb

  match "reports/*date" => "reports#index"

手动输入日期时,例如localhost:3000 / reports / 10/29/2012,网站运行正常。

主要问题是我不知道如何从文本字段获取输入作为param [:date]发送到控制器中的reports / index方法。

1 个答案:

答案 0 :(得分:1)

试试这个:

<%= link_to reports_path(:date => @date) %>

已编辑(使用表格):

<%= form_tag reports_path do %>
  <input type="string" id="datepicker" name="datepicker"/>
  <%= submit_tag "Select Date" %>
<% end %>

像这样。