我想執行自定義搜索,並希望將國家作爲執行搜索的選項之一。我對搜索控制器的動作看起來是這樣的:Rails國家選擇下拉菜單搜索:如何在頂部顯示優先國家
@articles = Article.filter(params.slice(:category, :country, :src_url, :date, :lang, :keywords, :title))
.where(is_active: true)
.paginate(:page => params[:page])
而且我的模型包含了所有這些領域(例如:範圍:全國各地, - >(國家){其中國家:國家}
所以我嘗試了幾個選項,並且到目前爲止沒有發現一個,我會滿足於完全
選項1:
<%= select_tag :country, options_from_collection_for_select(ISO3166::Country.countries.sort_by(&:name), 'name', 'name', params[:country]), :include_blank => true %>
優點:幾乎我想要的 - 乾淨和短。
缺點:不知道它是如何工作的,真的。我發現它在某處,並使用試驗和錯誤修改了一點。但是我沒有設法找到任何文件來指出它爲什麼以及如何工作,而試驗和錯誤我只能走得很遠。從這個問題出發 - 我不能修改它以顯示列表頂部的特定國家和其餘的排序如下。
選項2:
<%= country_select(nil, :country, { priority_countries: %w(RU BR IN CN ZA), include_blank: true, selected: params[:country] }, {}) %>
優點:這不正是我想要用1個例外。
缺點:它需要一種叫「用戶」作爲第一個參數,這是我設置爲無,並且它會導致怪異的行爲在GET - 它通過「%5Bcountry%5D =」,而不是簡單的「國=',我不喜歡它。我沒有找到擺脫它或解決它的方法。
有關如何更好/更清潔的建議?
誰說過你需要傳遞'user'到'country_select',這一切都取決於你如何是建立你的表格。 – fanta
這是文檔頁面https://github.com/stefanpenner/country_select 'country_select(「user」,「country」)' – user3735111
但這不是要求,這就是他們想要使用的,你可以以許多不同的方式使用它,看看Alexander Luna發佈的內容,他給了你另一個例子。這就是爲什麼我說這取決於你如何構建你的表單。 – fanta