[Elixir]add search box

ある人に検索窓まだー?と言われたので、メモがてら軽くサンプル実装してみた。
こんなもんで良いかな…

  • controller
def search_email(conn, %{"search" => %{"query" => query}}) do
  result = User.search_user_with_email_ilike query <> "%"
  users = Repo.all(User)
  render(conn, "search_index.html", users: users, assigns: result)
end
  • model
def search_user_with_email_ilike(email) do
  from(user in User, where: ilike(user.email, ^email))
  |> Repo.all
end
  • web/router.ex
post "/search", UserController, :search_email
  • search_index.html
%script
  function sample(users) {
    window.alert(users)
  }

- form_for @conn, user_path(@conn, :search_email), [as: :search], fn f ->
  = text_input f, :query
  = submit "Search"

%h2 searched users
%table{class: "table"}
  %thead
    %tr
      %th Name
      %th Email
      %th Password
      %th Permission
      %th Is deleted
  %tbody
  - for user <- @assigns do
    %tr
      %td
        %a{onclick: "sample('<%= user.name %>')"}= user.name
      %td= user.email
      %td= user.password
      %td= user.permission
      %td= user.is_deleted

https://github.com/KazuCocoa/web_qa_vote/commit/14d4bbd8cd88639dd48561ce0f2b26adb6428023

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.