#はじめに
RubyOnRailsについてネットで色々調べてみたが、どれも記述がくどくてRailsの各要素の関連がよくわかりにくい
自分なりにRubyOnRailsのルーティングについて簡単にまとめてみた
#Railsのルーティング
##表形式でまとめる
Railsのルーティングにはつまるところ、
(要求,URL,コントローラーのクラス名,コントローラーのメソッド名,viewのフォルダ,viewのファイル名)
が必要ようだ
個人的にはルーティングは
要求 | URI | コントローラーのクラス名 | コントローラーのメソッド名 | viewのフォルダ | viewのファイル名 |
---|---|---|---|---|---|
(1) | (2) | (3) | (4) | (5) | (6) |
のように表形式でまとめるほうが理解しやすいと思う | |||||
上記の表に従えば、routes.rbにGet要求のルーティングを記載したいとき、 | |||||
(1) '(2)', to: '(3)から_controlerを除外したもの#(4)' | |||||
の形式で記載すれば、ブラウザ上で | |||||
http://localhost:3000/(2)/ | |||||
と入力すれば、(6)のViewが表示されることになる |
##具体例
###Getの具体例
まずはGetの具体例を示す
要求 | URI | コントローラーのクラス名 | コントローラーのメソッド名 | viewのフォルダ | viewのファイル名 |
---|---|---|---|---|---|
get | nikkyuusan | sample_controller | sayhelloToNyukkyusan | sample | sayhelloToNyukkyusan.html.rb |
の場合だと | |||||
routes.rbには | |||||
get '/nikkyuusan/', to: 'sample#sayhelloToNyukkyusan' | |||||
の形式で記載すれば、ブラウザ上で | |||||
http://localhost:3000/nikkyuusan/ | |||||
と入力すれば、sayhelloToNyukkyusan.html.rbの記述が表示されることになる |
###postの具体例
次にPostの具体例を示す
要求 | URI | コントローラーのクラス名 | コントローラーのメソッド名 | viewのフォルダ | viewのファイル名 |
---|---|---|---|---|---|
post | nikkyuusanpost | sample_controller | sayhellopost | sample | sayhellopost.html.rb |
の場合だと | |||||
routes.rbには | |||||
post '/nikkyuusanpost/', to: 'sample#sayhellopost' | |||||
と記載する | |||||
そして、htmlファイルを例えば |
<!DOCTYPE html>
<html>
<script>
function doPost(){
var req = new XMLHttpRequest();
req.open('POST', 'http://localhost:3000/nikkyuusanpost/', true);
req.setRequestHeader('content-type',
'application/x-www-form-urlencoded;charset=UTF-8');
req.send('name='+f('nikkyu'));
req.onload = r(req,
function(){f('result').innerText=req.responseText ;});
}
function r(req,caller){
return function (event){
if (req.readyState === 4 && req.status === 200)
caller();
};
}
function f(str){
return document.getElementById(str);
}
</script>
<body>
<input type='text'id='nikkyu'><input type='button' onclick='doPost();'>
<div id='result'></div>
</html>
のように作成し、postメソッドを投げれば、画面上にHTMLのレスポンス内容が表示される
#規約でプログラムを縛る
上記の表を見ると
コントローラーのクラス名(の一部)→viewのフォルダ
コントローラーのメソッド名→viewのファイル名(の一部)
の対応付けさえ守っていれば、後はフレームワークで自動的にHTTPリクエストのルーティングをしてくれることが分かる。
プログラムの自由度は下がるが、その分、ロジックの記載がシンプルですむ。
この「規約を守ってプログラミングする」というのがRuby on Railsの大きな特徴でもあり、同時に足かせでもある。
設定ファイルでガチガチに定義を行うJavaのWebフレームワークとはこの部分で大きく思想が違っている