2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ruby on Railsのルーティングについて

Last updated at Posted at 2017-07-24

#はじめに
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ファイルを例えば
非同期.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フレームワークとはこの部分で大きく思想が違っている

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?