1

我将如何创建一个采用参数来限制搜索结果的操作?这将超出我的帖子模型

Posts_controller:

def getOneThrougTen

params[firstNum] params[secondNum]

return range of some sort?

end

4

3 回答 3

1

我并不完全清楚你想要实现什么,但如果它以块的形式显示搜索结果,我建议你使用will_paginate gem!

于 2011-02-28T20:50:12.540 回答
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%> 
于 2011-02-28T20:56:25.093 回答
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")

等等等等。非常强大的东西。

于 2011-02-28T21:04:47.320 回答