如何在我的控制器中放置条件?

时间:2013-09-27 05:35:43

标签: ruby-on-rails ruby ruby-on-rails-2

当我试图在我的控制器中设置一个条件时,我遇到了问题。这段代码在我的控制器里面:

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控制器中设置条件?

4 个答案:

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