For example, when you enter http://localhost:3000/quotes/1 to the address bar of the web browser and in the config/routes.rb file contain the following line:
match "/quotes/:id" => "quotes#show"
The Router will dispatch /quotes/1 to the quote controller's show action with { :id => 1 } in params. Also, we can generate a link to a particular quote by using the link_to helper; the information in the routes.rb will be used in generating the link as the example shown below.
<%= link_to "Link to this page", quote_path(@quote)%>
If we put the above code in the show.html.erb file for the quote, the result is as the following screenshot:
In addition, the RoR also provide the resource routing, it allows us to declare all of the common routes for a given resourceful controller. Browsers request pages from Rails by making HTTP requests with a specific HTTP method; GET, POST, PUT and DELETE. Each method is for performing an operation on the requested resource. A resource route will map a specified HTTP method to corresponding action in a single controller.
Let's assume that we have the resources declaration for the Quote controller
resources: quotes
and a browser make the HTTP request
DELETE /quotes/2
When Rails receives the HTTP request, it will map the request to the destroy method of the QuotesController as shown below.
def destroy
@quote = Quote.find(params[:id])
@quote.destroy
respond_to do |format|
format.html { redirect_to quotes_url }
format.json { head :ok }
end
end
The HTTP methods or verbs along with requested URLs will be mapped to corresponding actions of a controller. Referring to the resources declaration above all the HTTP verbs and corresponding controller's actions as shown below.
Rails provides a number of the helpers for generating URLs that are mapped to the controller's actions such as:
<%= link_to "Link to this page", quote_path(@quote)%>
If we put the above code in the show.html.erb file for the quote, the result is as the following screenshot:
In addition, the RoR also provide the resource routing, it allows us to declare all of the common routes for a given resourceful controller. Browsers request pages from Rails by making HTTP requests with a specific HTTP method; GET, POST, PUT and DELETE. Each method is for performing an operation on the requested resource. A resource route will map a specified HTTP method to corresponding action in a single controller.
Let's assume that we have the resources declaration for the Quote controller
resources: quotes
and a browser make the HTTP request
DELETE /quotes/2
When Rails receives the HTTP request, it will map the request to the destroy method of the QuotesController as shown below.
def destroy
@quote = Quote.find(params[:id])
@quote.destroy
respond_to do |format|
format.html { redirect_to quotes_url }
format.json { head :ok }
end
end
The HTTP methods or verbs along with requested URLs will be mapped to corresponding actions of a controller. Referring to the resources declaration above all the HTTP verbs and corresponding controller's actions as shown below.
HTTP Verb
|
Path
|
Action
|
Description
|
GET
|
/quotes
|
index
|
Show a list of all quotes
|
GET
|
/quotes/1
|
show
|
Show the detail of the quote (ID 1)
|
GET
|
/quotes/new
|
new
|
Show the form for creating a new quote
|
POST
|
/quotes
|
create
|
Create a new quote
|
GET
|
/quotes/1/edit
|
edit
|
Show the form for modifying the quote (ID 1)
|
PUT
|
/quotes/1
|
update
|
Update the quote (ID 1)
|
DELETE
|
/quotes/1
|
destroy
|
Delete the quote (ID 1)
|
Rails provides a number of the helpers for generating URLs that are mapped to the controller's actions such as:
- quotes_path returns /quotes
- new_quotes_path returns /quotes/new
- quote_path returns /quotes/:id, where :id is a quote ID
The resource routing for a singular resource is supported by using the match, as I shown earlier, or give the resources declaration a singular resource, such as:
resources :quote
Rails will map the HTTP verbs and URLs to the QuotesController's actions as follows:
HTTP Verb
|
Path
|
Action
|
Description
|
GET
|
/quote
|
show
|
Show the detail of the quote
|
GET
|
/quote/new
|
new
|
Show the form for creating a new quote
|
POST
|
/quote
|
create
|
Create a new quote
|
GET
|
/quote/edit
|
edit
|
Show the form for modifying the quote
|
PUT
|
/quote
|
update
|
Update the quote
|
DELETE
|
/quote
|
destroy
|
Delete the quote
|
Also, the resource routing supports the namespace and nested resources, you can find more information at this link, http://guides.rubyonrails.org/routing.html.
In this post, I would like to give the basic idea of the resource routing. When I use the advance features, I will post more about them later.
Have a nice week end :D.
ไม่มีความคิดเห็น:
แสดงความคิดเห็น