Как я могу поместить условные обозначения в свой контроллер?

У меня проблемы, когда я пытаюсь поставить условие в params в моем контроллере. Этот код находится внутри моего контроллера:

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 ответа

Вы код выглядит нормально. К сожалению, вы не говорите, какая у вас проблема. Единственное, что я вижу, что может потерпеть неудачу, - это условие. Если вы передадите некоторое значение в свои параметры, они не будут использоваться. Поэтому я думаю, вы должны использовать to_i в своем состоянии:

if params[:example].to_i == 1
 ...


Вы также можете отправить имя столбца вместе со своим значением и избежать ifs

@table = Model.find(:all,:conditions=>["#{params[:col]} = ?", params[:example] ] )


Вот код. У вас есть save 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


Попробуйте

@table = Model.where((params[:example] == 1 ? 'column_table= ?' : 'column_table2 = ?'), params[:example]) unless params[:example].blank?

licensed under cc by-sa 3.0 with attribution.