为什么我的date_field参数嵌套在标签名称中?

时间:2013-10-17 16:34:17

标签: forms ruby-on-rails-4

在我的控制器中,我有这个:

  def index
    filter = []

    if !params[:paid].blank?
      paid = params[:paid]
      filter << ["copay_received = '#{paid.to_s}'"]
    end

    if !params[:junk].blank?
      junk = params[:junk][:effective_on]
      filter << ["clients.effective_on >= '#{junk.to_s}'"]
    end 

    @unpaids = Appointment.joins(:client).where(filter.join(" AND "))   

  end

基于this question的(未接受)答案。

以下是我在索引页面上用来搜索它的表单:

<%= form_tag("/", method: "get") do %>
  <%= label_tag(:paid, "Search for:") %>
  <%= check_box_tag(:paid) %>
  <%= date_field(:junk, :effective_on) %>
  <%= submit_tag("Search") %>
<% end %>

我终于让我的date_field工作了(如有效的参数所示)。

但我的问题是为什么我必须在params散列中添加一个额外的层来获取:effective_on,而我不必做同样的事情来达到:paid

1 个答案:

答案 0 :(得分:3)

你正在使用错误的方法。它应该是date_field_tag

date_field方法应该与

之类的对象形式一起使用
form_for @user do |f|
  f.date_field :born_on
end