module Orion::DSL::Resources
Overview
A common way in Orion to route is to do so against a known resource. This method will create a series of routes targeted at a specific controller.
The following is an example controller definition and the matching resources definition.
class PostsController
include Orion::ControllerHelper
include ResponseHelpers
def index
@posts = Post.all
render :index
end
def new
@post = Post.new
render :new
end
def create
post = Post.create(request)
redirect to: post_path post_id: post.id
end
def show
@post = Post.find(request.path_params["post_id"])
end
def edit
@post = Post.find(request.path_params["post_id"])
render :edit
end
def update
post = Post.find(request.path_params["post_id"])
HTTP::FormData.parse(request) do |part|
post.attributes[part.name] = part.body.gets_to_end
end
redirect to: post_path post_id: post.id
end
def delete
post = Post.find(request.path_params["post_id"])
post.delete
redirect to: posts_path
end
end
resources :posts
Including/Excluding Actions
By default, the actions index, new, create, show, edit, update, delete
are included. You may include or exclude explicitly by using the only and except params.
NOTE The index action is not added for singular resources.
resources :posts, except: [:edit, :update]
resources :users, only: [:new, :create, :show]
Nested Resources and Routes
You can add nested resources and member routes by providing a block to the
resources definition.
resources :posts do
post "feature", action: feature
resources :likes
resources :comments
end
Singular Resources
In addition to using the collection of resources method, You can also add
singular resources which do not provide a id_param or index action.
resource :profile
Customizing ID
You can customize the ID path parameter by passing the id_param parameter.
resources :posts, id_param: :article_id
Constraining the ID
You can set constraints on the ID parameter by passing the id_constraint parameter.
See Orion::DSL::Constraints for more details on constraints.
resources :posts, id_constraint: /^\d{4}$/
Defined in:
orion/dsl/resources.crMacro Summary
- resource(name, *, controller = nil, only = nil, except = nil, format = nil, accept = nil, content_type = nil, type = nil)
- resources(name, *, controller = nil, only = nil, except = nil, id_constraint = nil, format = nil, accept = nil, id_param = nil, content_type = nil, type = nil)