ROR要求采取行动以获得一系列物品

时间:2011-02-28 20:13:02

标签: ruby-on-rails controller range param

如何创建一个接受参数来限制搜索结果的操作?这将是我的帖子模型

Posts_controller:

def getOneThrougTen

params[firstNum] params[secondNum]

return range of some sort?

end

3 个答案:

答案 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")

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