1

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] としてコントローラーのレポート/インデックス メソッドに送信する方法がわからないことです。

4

1 に答える 1

1

これを試して:

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

編集済み(フォームを使用):

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

このようなもの。

于 2012-11-21T18:32:45.187 に答える