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