ぼざクリ タグ広場 https://hub.nizika.monster
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

53 lines
1.5 KiB

  1. class WikiPagesController < ApplicationController
  2. def show
  3. wiki_page = WikiPage.find(params[:id])
  4. return head :not_found unless wiki_page
  5. render json: wiki_page.as_json.merge(body: wiki_page.body)
  6. end
  7. def show_by_title
  8. wiki_page = WikiPage.find_by(title: params[:title])
  9. return head :not_found unless wiki_page
  10. render json: wiki_page.as_json.merge(body: wiki_page.body)
  11. end
  12. def create
  13. return head :unauthorized unless current_user
  14. return head :forbidden unless ['admin', 'member'].include?(current_user.role)
  15. wiki_page = WikiPage.new(title: params[:title], created_user: current_user, updated_user: current_user)
  16. if wiki_page.save
  17. wiki_page.set_body params[:body], user: current_user
  18. render json: wiki_page, status: :created
  19. else
  20. render json: { errors: wiki_page.errors.full_messages }, status: :unprocessable_entity
  21. end
  22. end
  23. def update
  24. return head :unauthorized unless current_user
  25. return head :forbidden unless ['admin', 'member'].include?(current_user.role)
  26. wiki_page = WikiPage.find(params[:id])
  27. return head :not_found unless wiki_page
  28. wiki_page.updated_user = current_user
  29. wiki_page.set_body params[:body], user: current_user
  30. wiki_page.save!
  31. head :ok
  32. end
  33. def search
  34. q = WikiPage.all
  35. if params[:title].present?
  36. title = params[:title].to_s.strip
  37. q = q.where('title LIKE ?', "%#{ WikiPage.sanitize_sql_like(title) }%")
  38. end
  39. render json: q.limit(20)
  40. end
  41. end