0

我创建了一个搜索表单

<%= form_tag url_for(:action => "index") do %>
    <%= text_field_tag 'fromdate' %>
    <%= text_field_tag 'todate' %>
    <%= submit_tag 'Search' %>
<% end %>

我需要在我的控制器中将所有这些值作为单个参数传递给模型。这是我的控制器

def index
    @client = Customer.search
    #something like this @client = Customer.search(as_single_params)
    respond_to do |format|
        format.html
    end
  end

我怎样才能做到这一点?

4

2 回答 2

2

您可以在您的视图中执行此操作:

<%= text_field_tag "some_fields[]" %>
<%= text_field_tag "some_fields[]" %>
<%= text_field_tag "some_fields[]" %>

然后在您的控制器中只需使用以下方法检索值:

some_fields = params[:some_fields] # this is an array

如果你将值作为键传递,Rails 会给你一个 Hash:

<%= text_field_tag "some_fields[fromdate]" %>
<%= text_field_tag "some_fields[todate]" %>

在您的控制器中,您现在可以执行此操作:

@clients = Customer.search(params[:some_fields])
       ^

我添加了一个sto,@client因为您可能会有多个符合您的条件的客户。

于 2013-08-29T11:59:16.310 回答
0

当您提交表单时,您选择的所有参数都将在params散列中传递给控制器​​。例如,params[:fromdate]params[:todate]

在您的控制器中,如果您的params哈希仅包含Customer您想要搜索的字段(即,表单仅Customer定义了字段,那么您可以执行以下操作:

def index
  @clients = Customer.where(params)
  respond_to do |format|
    format.html
  end
end

请注意,我显示@clientssincewhere将返回一个集合。您可以通过执行以下操作选择第一个(特别是如果您确定只有一个):

@client = Customer.where(params).try(:first) 
于 2013-08-29T12:02:07.980 回答