2012-11-21 32 views
1

我想通过Rails中的button_to传递一个值到索引页面,而是调用POST并在数据库中创建一个新的空值。我所拥有的是这样的:ruby​​通过带日期选择器输入的参数

在/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 

在/配置/路线。 RB

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

当手动输入一个日期,例如为localhost:3000 /报道/ 10月29日/ 2012年,该网站工作正常。

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

回答

1

试试这个:

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

编辑(使用表单):

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

这样的事情。

+0

这使得按钮/链接现在只刷新页面,因为它只是传递'DateTime.now.strftime('%m /%d /%Y')'。我试图从输入框中获取字符串并通过按钮传递它。 –

+0

然后创建一个表单,让我编辑答案。 – MurifoX

+0

这样做的时候,它似乎仍然在调用POST创建方法而不是索引方法时遇到同样的问题。我甚至不确定字符串是否正确传递。我试着做这个表单,并将它重新路由到'reports/10171',并在数据库中创建了一个新的空条目。 –

相关问题