我将如何创建一个采用参数来限制搜索结果的操作?这将超出我的帖子模型
Posts_controller:
def getOneThrougTen
params[firstNum] params[secondNum]
return range of some sort?
end
我将如何创建一个采用参数来限制搜索结果的操作?这将超出我的帖子模型
Posts_controller:
def getOneThrougTen
params[firstNum] params[secondNum]
return range of some sort?
end
我并不完全清楚你想要实现什么,但如果它以块的形式显示搜索结果,我建议你使用will_paginate gem!
一旦您了解了活动记录如何模仿传递参数的 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%>
如果您正在寻找分页类型代码,您应该查看 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")
等等等等。非常强大的东西。