0

並べ替えとフィルター処理に使用するモデル属性ではない、いくつかの URL パラメーターを含むページがあります。現在、この質問のようにコントローラーでそれらを検証しようとしていますが、パラメーターが期待される値のセットにあることを検証するのに問題があります。

before_filter :validate_params, :only => :index

def validate_params
  if !params[:type] = 'any' || !params[:type] = 'up' || !params[:type] = 'down'
    params[:type] = 'any'
  end
end

この場合、パラメータが「up」または「down」であっても、値は常に「any」です。

4

3 に答える 3

0

条件は次のようになります。

before_filter :validate_params, :only => :index

def validate_params
  if params[:type] != 'any' || params[:type] != 'up' || params[:type] != 'down'
    params[:type] = 'any'
  end
end
于 2013-10-31T05:48:15.597 に答える
0

==or!=と notを使用して比較する必要があります=

=は代入用、==!=は比較用

def validate_params
  if params[:type] != 'any' || !params[:type] != 'up' || !params[:type] != 'down'
    params[:type] = 'any'
  end
end

また

!['any', 'up', 'down'].include?(params[:type])
于 2013-10-31T05:45:11.117 に答える
0

params[:type] == 'up' の場合、params[:type] == 'down' ではないので、|| を使用しているため、常に any に設定されます。代わりに && を使用してみてください

if !params[:type] == 'any' && !params[:type] == 'up' && !params[:type] == 'down'

any、up ordown とは異なる params[:type] を設定したい場合は、== も使用します

于 2013-10-31T05:46:18.373 に答える