Guest User

Untitled

a guest
Nov 20th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. # MODEL
  2. class Foo < BaseModel
  3. table :foos do
  4. column name : String
  5. end
  6. end
  7.  
  8. # FORM
  9. class FooForm < Foo::BaseForm
  10. fillable name
  11.  
  12. def prepare
  13. validate_required name
  14. end
  15. end
  16.  
  17. # ACTIONS
  18.  
  19. # index.cr
  20. class Foos::Index < BrowserAction
  21. route do
  22. foos = FooQuery.new
  23. render IndexPage, foos: foos
  24. end
  25. end
  26.  
  27. # show.cr
  28. class Foos::Show < BrowserAction
  29. route do
  30. foo = FooQuery.new.find(id)
  31. render ShowPage, foo: foo
  32. end
  33. end
  34.  
  35. # new.cr
  36. class Foos::New < BrowserAction
  37. route do
  38. render NewPage, form: FooForm.new
  39. end
  40. end
  41.  
  42. # create.cr
  43. class Foo::Create < BrowserAction
  44. route do
  45. FooForm.create(params) do |form, foo|
  46. if foo
  47. render Foos::ShowPage, foo: foo
  48. else
  49. render Foos::NewPage, form: form
  50. end
  51. end
  52. end
  53. end
  54.  
  55. # edit.cr
  56. class Foos::Edit < BrowserAction
  57. route do
  58. foo = FooQuery.new.find(id)
  59. render EditPage, foo: foo, form: FooForm.new(foo)
  60. end
  61. end
  62.  
  63. # update.cr
  64. class Foos::Update < BrowserAction
  65. route do
  66. foo = FooQuery.new.find(id)
  67. FooForm.update(foo, params) do |form, foo|
  68. if form.saved?
  69. render Foos::ShowPage, foo: foo
  70. else
  71. render Foos::EditPage, form: form, foo: foo
  72. end
  73. end
  74. end
  75. end
  76.  
  77. # delete.cr
  78. class Foos::Delete < BrowserAction
  79. route do
  80. foo = VenueQuery.new.find(id)
  81. foo.delete
  82. redirect Foos::Index
  83. end
  84. end
  85.  
  86.  
  87. # PAGES
  88.  
  89. # index_page.cr
  90. class Foos::IndexPage < MainLayout
  91. needs foos : FooQuery
  92.  
  93. def content
  94. h1 "Foos"
  95. ul do
  96. @foos.each do |foo|
  97. li do
  98. link foo.name, to: Foos::Show.with(foo.id)
  99. end
  100. end
  101. end
  102. end
  103. end
  104.  
  105. # show_page.cr
  106. class Foos::ShowPage < MainLayout
  107. needs foo : Foo
  108.  
  109. def content
  110. h1 "Foo: #{@foo.name}"
  111. link "EDIT", to: Foos::Edit.with(@foo.id)
  112. link "DELETE", to: Foos::Delete.with(@foo.id)
  113. end
  114. end
  115.  
  116. # new_page.cr
  117. class Foos::NewPage < MainLayout
  118. needs form : FooForm
  119.  
  120. def content
  121. h1 "New Foo"
  122. render_foo_form(@form)
  123. end
  124.  
  125. private def render_foo_form(f)
  126. form_for Foo::Create do
  127. field(f.name) { |i| text_input i }
  128. submit "Save", flow_id: "save-button"
  129. end
  130. end
  131. end
  132.  
  133. # edit_page.cr
  134. class Foos::EditPage < MainLayout
  135. needs foo : Foo
  136. needs form : FooForm
  137.  
  138. def content
  139. h1 "Edit Foo"
  140. render_foo_form(@form)
  141. end
  142.  
  143. private def render_foo_form(f)
  144. form_for Foos::Update.with(@foo.id) do
  145. field(f.name) { |i| text_input i }
  146. submit "Save", flow_id: "save-button"
  147. end
  148. end
  149. end
Add Comment
Please, Sign In to add comment