PARAMS是亂碼,所以你可以在其中使用任何散列法,像任何?或空?,您可以訪問鍵和值很好,但軌道富人有條件鏈接link_to_if一個幫手讓你的例子可能是這樣的:
<%= link_to_if params[:country].present?, 'Clear Filters', users_path %>
,或者如果你想知道是否有任何PARAMS
<%= link_to_if params.any?, 'Clear Filters', users_path %>
當然,也有你的PARAMS變量的項目,如控制器等,如果你有一組則params的檢查,你總是可以做:
<%= link_to_if (params.keys & filters).empty?, 'Clear Filters', users_path %>
這就是& operator所做的。至於過濾器,你可以使用任何選項來傳遞數據到視圖,以控制器上的實例變量(不推薦,導致它不是邏輯的一部分)將方法放在幫助器上(可以工作)或者在模型常數(我更喜歡)
如果你選擇離開它的輔助,你可以把它添加到users_helper是有意義的事業就會幫助佈局視圖至極,絕對是爲什麼助手適用於:
# helpers/users_helper.rb
def filters
['country', 'height', 'age']
end
但是,您也可以在其他地方使用這些值盟友,在那裏你會真正篩選值,我認爲它是模型來過濾那些有責任,所以你可以把它放在你的模型,它可能是這樣的:
# models/user.rb
...
FILTERS = ['country', 'height', 'age']
...
#your view
<%= link_to_if (params.keys & User::FILTERS).empty?, 'Clear Filters', users_path %>
有一個.any?方法,對於Ruby中的枚舉類型,你有沒有試過?,也是.empty?可以工作 – aledustet
我編輯了這個問題。這些不起作用。 –
我認爲你需要檢查你需要的所有參數,以確保不存在使用param.keys屬性,檢查答案 – aledustet