我试图通过 Rails 中的 button_to 将值传递到索引页面,但它调用 POST 并在数据库中创建一个新的空值。我所拥有的是:
在 /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] 发送到控制器中的报告/索引方法。