我已经实现 Ransack 的搜寻功能,现在我需要加上筛选器,让列表依据下拉选单筛选的「状态」--也就是下方程式码的 prompt: t('all_status'),显示只符合该状态的 records。
我曾经依照 Ransack 的「extensive documentation」的说明(其中的 Sorting in the View 章节)试作,但结果不断引发 Syntax error,最后只剩下没有功能的「Filter」按钮。我不想放弃 Ransack 的搜寻功能,请告诉我如何加上 filter。
这是 View 的程序代码
<%= search_form_for(@query, class: 'form' , url: list_tasks_path) do |f| %>
<%= f.label :name, t('search') %>
<%= f.search_field :name_or_note_cont, placeholder: t('task_name_note') %>
<%= f.select :status_eq, Task.statuses.map { |key, value| [t("checkpoint_status.#{key}"), value] }, prompt: t('all_status') %>
<%= f.submit %>
<% end %>
这是相关的 controller#action
def list
@query = current_user.tasks.ransack(params[:q])
@tasks = @query.result.page(params[:page]).per(10)
end