当我试图在我的控制器中设置一个条件时,我遇到了问题。这段代码在我的控制器里面:
if params[:example] == 1
@table = Model.find(:all,:conditions=>['column_table= ?',params[:example] ] )
else
@table = Model.find(:all,:conditions=>['column_table2= ?',params[:example] ] )
end
这段代码是否正确?如何在params控制器中设置条件?
答案 0 :(得分:2)
你的代码看起来还不错。不幸的是你不说你有什么问题。我看到的唯一可能失败的是条件。如果你将一些价值传递给你的参数,那么它们就不会被类型化。因此,我猜您应该在条件中使用to_i
:
if params[:example].to_i == 1
...
答案 1 :(得分:1)
尝试
@table = Model.where((params[:example] == 1 ? 'column_table= ?' : 'column_table2 = ?'), params[:example]) unless params[:example].blank?
答案 2 :(得分:1)
这是代码。你已经将params [:example]保存在一个变量中并使用你的编码。
if params[:example].present?
@example = params[:example]
if @example == 1
@table = Model.find(:all,:conditions=>['column_table= ?',params[:example] ] )
else
@table = Model.find(:all,:conditions=>['column_table2= ?',params[:example] ] )
end
答案 3 :(得分:1)
您还可以发送列名及其值,并避免使用ifs
@table = Model.find(:all,:conditions=>["#{params[:col]} = ?", params[:example] ] )