mirror of
				https://gitea.invidious.io/iv-org/shard-kemal.git
				synced 2024-08-15 00:53:36 +00:00 
			
		
		
		
	
						commit
						2ffb4dccdf
					
				
					 6 changed files with 73 additions and 1 deletions
				
			
		
							
								
								
									
										16
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										16
									
								
								README.md
									
										
									
									
									
								
							|  | @ -147,6 +147,22 @@ end | |||
| Kemal.config.add_handler CustomHandler.new | ||||
| ``` | ||||
| 
 | ||||
| ### Views | ||||
| 
 | ||||
| You can use ERB-like built-in **ECR** views to render files. | ||||
| 
 | ||||
| ```crystal | ||||
| get '/:name' do | ||||
|   render "views/hello.ecr" | ||||
| end | ||||
| ``` | ||||
| 
 | ||||
| And you should have an `hello.ecr` view. It will have the same context as the method. | ||||
| 
 | ||||
| ```erb | ||||
| Hello <%= env.params["name"] %> | ||||
| ``` | ||||
| 
 | ||||
| ## Static Files | ||||
| 
 | ||||
| Kemal has built-in support for serving your static files. You need to put your static files under your ```/public``` directory. | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ Kemal means *Mature, grown up* in Turkish. | |||
| ## How to start? | ||||
| 
 | ||||
|  - [Getting Started Tutorial](./tutorial.md) | ||||
|  - [Using Dynamic Templates (Not Supported Yet)](./templates.md) | ||||
|  - [Using Dynamic Views](./views.md) | ||||
|  - [Parsing HTTP requests and Form Data](./http-requests.md) | ||||
|  - [Uploading Files](./upload.md) | ||||
|  - [Serving Static Files](./statics.md) | ||||
|  |  | |||
							
								
								
									
										28
									
								
								docs/views.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								docs/views.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| # Views | ||||
| 
 | ||||
| You can use ECR to build views. Kemal serves a `render` macro to use built-in `ECR` | ||||
| library. | ||||
| 
 | ||||
| ## Writing Views | ||||
| 
 | ||||
| The ECR is actually ERB. | ||||
| 
 | ||||
| ``` | ||||
| src/ | ||||
|   views/ | ||||
|     hello.ecr | ||||
| ``` | ||||
| 
 | ||||
| Write `hello.ecr` | ||||
| ```erb | ||||
| Hello <%= your_name %> | ||||
| ``` | ||||
| 
 | ||||
| ## Embedding View File | ||||
| 
 | ||||
| ```crystal | ||||
| get '/' do |env| | ||||
|   your_name = "Kemal" | ||||
|   render "views/hello.ecr" | ||||
| end | ||||
| ``` | ||||
							
								
								
									
										1
									
								
								spec/asset/hello.ecr
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								spec/asset/hello.ecr
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| Hello <%= env.params["name"] %> | ||||
							
								
								
									
										13
									
								
								spec/view_spec.cr
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								spec/view_spec.cr
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | |||
| require "./spec_helper" | ||||
| 
 | ||||
| describe "Views" do | ||||
|   it "renders file" do | ||||
|     kemal = Kemal::Handler.new | ||||
|     kemal.add_route "GET", "/view/:name" do |env| | ||||
|       render "spec/asset/hello.ecr" | ||||
|     end | ||||
|     request = HTTP::Request.new("GET", "/view/world") | ||||
|     response = kemal.call(request) | ||||
|     response.body.should contain("Hello world") | ||||
|   end | ||||
| end | ||||
							
								
								
									
										14
									
								
								src/kemal/view.cr
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/kemal/view.cr
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| # Kemal render uses built-in ECR to render methods. | ||||
| 
 | ||||
| ## Usage | ||||
| # get '/' do | ||||
| #   render 'hello.ecr' | ||||
| # end | ||||
| 
 | ||||
| require "ecr/macros" | ||||
| 
 | ||||
| macro render(filename) | ||||
|   String.build do |__view__| | ||||
|     embed_ecr {{filename}}, "__view__" | ||||
|   end | ||||
| end | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue