2017-03-08 1 views
-2

私は次のようなものを持っていますdevelopers_controllerと私はlocation_paramsに基づいてクエリを実行したいと思います。変数をループしているレール

私は変数locationを、ユーザーが研究の入力として与えたlocation_paramsで作成します。この変数にeachループを実行して、ユーザーリクエストに基づいて@locations = Location.allのデータをフィルタリングします。

これは私のプライベートメソッドlocation_paramsです:私はどのようにループlocation変数をに見つけることができません

def index_update 
    location = Location.new(location_params) 
    locations = Location.all 
    location.each do |param, value| 
    if value != nil 
     locations = locations.where(param => value) 
    end 
    end 
end 

def location_params 
    params.require(:location).permit(:country, :location, :surfspot, :barbecue, :villa, :swimmingpool, :skiresort, :singleroom) 
end 

これは私のindex_updateアクションです。


これは私のRailsのコンソールでの私の場所のモデルである:

=> #<Location:0x000000036b6838 
id: nil, 
host_id: nil, 
description: nil, 
location: nil, 
singleroom: nil, 
sharedroom: nil, 
surfspot: nil, 
barbecue: nil, 
villa: nil, 
swimmingpool: nil, 
skiresort: nil, 
created_at: nil, 
updated_at: nil, 
country: nil, 
state: nil, 
houseimages: nil 
+1

をあなたの実際の問題は何ですか?ループまたはdivの幅? – bork

+1

'if value!= nil'の代わりに' if!value.nil? 'を使用してください。 –

+1

'location'ではなく' locations'にループしてはいけませんか? –

答えて

1

私は、クエリに存在する値でのみ使用するパラメータには、このような何かをするだろう:

def index_update 
    query_attributes = location_params.select { |_, v| v.present? } 
    locations = Location.where(query_attributes) 
end 

または:

def index_update 
    query_attributes = location_params.reject { |_, v| v.blank? } 
    locations = Location.where(query_attributes) 
end 
+0

実際これが機能し、私はそれを受け入れます。ありがとう。 –

0

location_paramsすることができます場合は、新しい場所をインスタンス化するために、それは彼らがwhereに渡すために、すでに適切な形式だ可能性があります:

def index_update 
    locations = Location.where(location_params) 
end 

あなたはのparamsからゼロ値を削​​除する必要がある場合:

def index_update 
    locations = Location.where(location_params.delete_if { |k,v| v.nil? }) 
end 
+0

'location_params'のいくつかが' nil'に等しい場合、クエリはそれらのフィールドが空のエントリだけを選択します。値が 'nil'の場合、そのフィルタを追加したくないのですが、 基本的には、与えられたパラメータのすべての結果を返したいので、ループを行い、' if value.present? '条件 しかし、実際にこの答えは非常にありがとう! –

関連する問題