0

当我尝试在控制器的参数中设置条件时遇到问题。这段代码在我的控制器里面:

if params[:example] == 1
   @table = Model.find(:all,:conditions=>['column_table= ?',params[:example]  ]  )
else
   @table = Model.find(:all,:conditions=>['column_table2= ?',params[:example]  ]  )
end

这段代码正确吗?如何在参数控制器中放置条件?

4

4 回答 4

2

你的代码看起来不错。不幸的是,你没有说你有什么问题。我看到的唯一可能失败的是条件。如果您将某些值传递给您的参数,则它们不会被类型转换。因此我想你应该to_i在你的条件下使用:

if params[:example].to_i == 1
  ...
于 2013-09-27T06:27:46.690 回答
1

尝试

@table = Model.where((params[:example] == 1 ? 'column_table= ?' : 'column_table2 = ?'), params[:example]) unless params[:example].blank?
于 2013-09-27T05:42:54.613 回答
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
于 2013-09-27T05:43:56.993 回答
1

您还可以发送列名及其值并避免使用 ifs

@table = Model.find(:all,:conditions=>["#{params[:col]} = ?", params[:example]  ]  ) 
于 2013-09-27T05:49:16.527 回答