coa*_*ird 4 ruby ruby-on-rails
假设我有'Car'模型和控制器'cars',以及方法'display'.
我有多个属性,如:
in_production,year,make
我可以轻松地做这样的事情来找到符合所有传递参数的汽车:
def display
@cars = Car.find(:all, :conditions => { :in_production => #{params[:in_production]}, :year => #{params[:year]}, :make => #{params[:make]} })`
end
Run Code Online (Sandbox Code Playgroud)
所以我正在做的是在菜单中编写硬链接,所以如果我想找到2009年生产的所有日产汽车,我会将这些值作为参数传递给我的链接.
在另一页上,我想展示2009年的每辆车都是in_production,只有两辆车而不是三辆车.什么是动态改变条件的最佳方式,以便它可以使用一个,两个或三个参数,同时使用相同的动作?
有任何想法吗?
ben*_*sie 10
首先,使用
:conditions => "in_production = '#{params[:in_production]}' AND year = '#{params[:year]}' AND make = '#{params[:make]}'"
Run Code Online (Sandbox Code Playgroud)
易受SQL注入攻击.在数据库条件中使用它们之前,您需要转义用户提供的参数.
这样的事情应该让你根据参数是否存在更加动态地添加条件.我没有测试它,所以我可能很快就会编辑它...
def display
conditions = []
conditions << [ "in_production = ?", params[:in_production] ] if params[:in_production].present?
conditions << [ "year = ?", params[:year] ] if params[:year].present?
conditions << [ "make = ?", params[:make] ] if params[:make].present?
@cars = Car.all(:conditions => conditions )
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7309 次 |
| 最近记录: |