【发布时间】:2013-11-21 22:13:44
【问题描述】:
例如
我的搜索视图中有 5 个参数:
params[:a] params[:b] params[:c] params[:d] params[:e]
我想在以下情况下在我的控制器中搜索:
params[:a].present? and params[:b].nil?
params[:a].present? and params[:c].nil?
params[:a].present? and params[:e].nil?
params[:b].present? and params[:c].nil?
params[:b].present? and params[:d].nil?
............
params[:a].nil? and params[:b].nil?
.............
这是我尝试过的:
controller:
if params[:a].nil?
@query
else
if params[b].nil?
@another_query
else
...........#and it will continue with lots of conditions according with params
end
end
我可以尝试很多条件
这是一个真实的例子,我得到了这个错误“undefined method `paginate' for nil:NilClass”
#table
policies
id num_policy type_id doc name
1 2323 1 181844 Charles
2 2121 2 151511 Aguardientico
3 3423 2 434344 Benjamin
#controller
if params[:num_policy].present?
@search= Policy.find(:all,:conditions=>['num_policy LIKE ?',params[:num_policy] ])
end
if params[:type_id].present?
@search= Policy.find(:all,:conditions=>['type_id LIKE ?',params[:type_id] ])
end
if params[:doc].present?
@search= Policy.find(:all,:conditions=>['doc LIKE ?',params[:doc] ])
end
if params[:name].present?
@search= Policy.find(:all,:conditions=>['name LIKE ?',params[:name] ])
end
if params[:doc].present? and params[:type_id].present?
@search= Policy.find(:all,:conditions=>['doc LIKE ? and type_id LIKE ?',params[:doc],params[:type_id] ])
end
@policies= @search.paginate( :page => params[:page], :per_page =>2)
#view
<% form_tag :controller=>"policy",:action=>"search" do %>
<%= text_field_tag "num_policy",params[:num_policy] %>
<%= text_field_tag "doc",params[:doc] %
<%= text_field_tag "name",params[:name] %
<%= text_field_tag "type_id",params[:type_id] %
<% end %>
<% @policies.each do |p| %>
<%= p.num_policy %>
<%= p.type_id %>
<%= p.doc %>
<%= p.name %>
<% end %>
但是如果删除分页我得到这个错误“你没想到它有一个 nil 对象! 您可能期望有一个 Array 的实例。 评估 nil.each 时发生错误"
#controller
@policies= @search
#says that my line <% @policies.each do |p| %> is nil
有没有办法控制它们?
我只是想征求意见,也许有人也发生过。
谢谢。
【问题讨论】:
-
你的意思是什么时候这些行是真的?
-
不完全正确或错误,我指的是是否有值或是否为空(存在和空白)
标签: ruby-on-rails ruby ruby-on-rails-2