1

検索にはいくつかの条件があります。

@events = Event.search(params[:search], 
  :conditions => {:group_size => 1, :days => 1})

上記のコードは正常に動作しています。ただし、ハッシュをプライベート メソッドに置き換えたい場合は、構文エラーが発生します。

syntax error, unexpected ',', expecting tASSOC
    :conditions => {group_size_condition, :days => 1},

コードは次のとおりです

@events = Event.search(params[:search], 
  :conditions => {group_size_condition, :days => 1})

private

def group_size_condition
  if params[:groupsize] == 'single (1)'
    :group_size => 1
  elsif params[:groupsize] == 'couple (2)'
    :group_size => 2
  elsif params[:groupsize] == 'small group(3-5)'
    :group_size => 3..5
  else
    nil
  end
end

前もって感謝します

4

3 に答える 3

2

それは仕事になります

@events = Event.search(params[:search], 
  :conditions => group_size_condition.merge(:days => 1))

private

def group_size_condition
  case params[:groupsize]
  when 'single (1)' then {:group_size => 1}
  when 'couple (2)' then {:group_size => 2}
  when 'small group(3-5)' then {:group_size => 3..5}
  else
    {}
  end
end
于 2012-08-12T19:43:38.283 に答える
0

:group_size キーを見逃したと思います

@events = Event.search(params[:search], 
  :conditions => {:group_size => group_size_condition, :days => 1})
于 2012-08-12T19:11:34.727 に答える
0

次のように、実際に文字列を渡したいと思うかもしれません。

def group_size_condition
  if params[:groupsize] == 'single (1)'
    ':group_size => 1'
  elsif params[:groupsize] == 'couple (2)'
    ':group_size => 2'
  elsif params[:groupsize] == 'small group(3-5)'
    ':group_size => 3..5'
  else
    nil
  end
end
于 2012-08-12T19:15:39.883 に答える