如何创建一个接受参数来限制搜索结果的操作?这将是我的帖子模型
Posts_controller:
def getOneThrougTen
params[firstNum] params[secondNum]
return range of some sort?
end
答案 0 :(得分:1)
我不清楚你想要实现什么,但如果它以块的形式显示搜索结果,我建议你使用will_paginate宝石!
答案 1 :(得分:0)
一旦你学会了记录模拟sql调用的基本知识,传递参数变得直观。例如,您可以根据特定列的范围从Post模型创建@posts集合,订购结果并限制返回的数量。
您可以观看脚本/服务器输出以查看实际的SQL,以帮助了解发生了什么以及为什么某些内容无法按计划进行。
@posts=Post.find(:all, :conditions=>["db_column_name between ? and ?", firstNum, secondNum],:order=>"db_column_name ASC", :limit=>10)
实际发送和阅读你的参数.. 在您的控制器中,您可以读取视图发送的参数并将它们分配给变量。例如,你可以做到。
def getDateRangeandPassItOn
firstNum=params[:firstNum]
...
实际上将它们从视图发送到控制器是不同的,具体取决于您是否使用完全安静的控制器,例如rails scaffoldind中生成的控制器。如果你想要的只是将它们发送到一个非常安静的方法,例如“getDateRangeandPassItOn”,你会在你的视图中做这样的事情。
<% form_for ({:controller => 'name', :action => "getDateRangeandPassItOn"}) do f%>
<%f.label :firstNum%>
<%f.textField :firstNum%>
<%f.submit "submit"%>
<%end%>
答案 2 :(得分:0)
如果您正在寻找分页类型代码,您应该查看Rails 3中Arel和ActiveRecord提供的新功能。这将允许您执行以下操作:
@posts = Post.all.limit(myLimit).offset(myOffset)
或
@posts = Post.where(["user_id = ?",myUserId]).limit(myLimit).offset(myOffset).order("created_at desc")
等。等等非常强大的东西。