PhoenixBricks.Filter (phoenix_bricks v0.1.2) View Source

Defines a Filter Schema

Examples

    defmodule RecordFilter do
      use PhoenixBricks.Filter,
          filters: [
            field_matcher: :string
          ]
    end

It defines a schema which fields could be used in a search form.

Search changeset

    def index(conn, params) do
      filters = Map.get(params, "filters", %{})

      conn
      |> assign(:changeset, RecordFilter.changeset(%RecordFilter{}, filters))
      |> render("index.html")
    end
    <%= form_for @conn, Routes.session_path(@conn, :create), [method: :post, as: :user], fn f -> %>
      <div class="form-group">
        <%= label f, :field_matcher %>
        <%= text_input f, :field_matcher %>
      </div>

      <div class="form-group">kab
        <%= submit "Search" %>
      </div>
    <% end %>

Convertion from map of params to a list of filtered scopes

    iex> changeset = RecordFilter.changeset(%RecordFilter{}, %{"field_matcher" => "value"})
    iex> RecordFilter.convert_filter_to_scopes(filters)
    iex> [field_matcher: "value"]