我创建了一个搜索表单
<%= 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
我该怎么做?
答案 0 :(得分: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会给你一个哈希:
<%= text_field_tag "some_fields[fromdate]" %>
<%= text_field_tag "some_fields[todate]" %>
在您的控制器中,您现在可以执行此操作:
@clients = Customer.search(params[:some_fields])
^
我向s
添加了@client
,因为您可能有多个符合条件的客户。
答案 1 :(得分:0)
提交表单时,您选择的所有参数都将以params
哈希值传递给控制器。例如,params[:fromdate]
和params[:todate]
。
在您的控制器中,如果您的params
哈希仅包含您要搜索的Customer
个字段(即表单只定义了Customer
个字段,那么您可以这样做:
def index
@clients = Customer.where(params)
respond_to do |format|
format.html
end
end
请注意,我显示@clients
,因为where
将返回一个集合。你可以选择第一个(特别是如果你确定只有一个):
@client = Customer.where(params).try(:first)