目的:htmlのinputタグ(テキストボックス)で入力されたデータを取得し表示する。
実施環境:
OS:Windows8.1
Ruby:v2.2.2
Sinatra:v1.4.6
Haml:v4.0.6
ディレクトリ構造:
作業ディレクトリ
|-sinatra_start.rb(ファイル)
|
|-views(ディレクトリ)
|-index.haml(ファイル)
|-request_print.haml(ファイル)
目次:
- 入力データを取得(sinatra_start.rb)
- 入力フォームを作成(index.haml)
- 入力データを表示(request_print.haml)
- 説明&実行
以前、以下の記事を閲覧して頂いたことがある方は、
ソースコードを追記/修正する形で実施すると楽です。
1.入力データを取得(sinatra_start.rb)
1.1
画面側で入力されたデータを取得する部分を記述する。
ソースコードは以下の通り作成した。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# encoding: utf-8 | |
# File Name: sinatra_test.rb | |
# Create Day is 2015/05/08 | |
# Last Update Day is 2015/05/14 | |
# Gem List | |
gem 'tilt', '1.4.1' | |
# Require List | |
require 'sinatra' | |
# sinatra reloader is classic type | |
require 'sinatra/reloader' if development? | |
require 'haml' | |
require 'tilt' | |
require 'csv' | |
# 外部エンコーディングを変更 | |
Encoding.default_external = "UTF-8" | |
get '/' do | |
@title = "Hello world!!" | |
@text = "Hello Haml!!" | |
@bbs_data = CSV.read("resources/bbs_data.csv") | |
haml :index | |
end | |
put '/request_print' do | |
@request_method = request.request_method | |
@request_url = request.url | |
@request_path = request.path | |
@name = params[:name]#request[:name] | |
@title = params[:title]#request[:title] | |
@message = params[:message]#request[:message] | |
haml :request_print | |
end |
2.入力フォームを作成(index.haml)
2.1
画面に入力するための入力フォームを作成する。
ソースコードは以下の通り作成した。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
!!! | |
-# %TagName(html)で記述 | |
%html{:lang => "ja"} | |
%head | |
-# 「%TagName= @EmmbeddingName」で出力 | |
%title= @title | |
%body | |
-# 「%TagName #{@EmmbeddingName}で出力」 | |
%h1 #{@title} | |
%p= @text | |
- @bbs_data.each do |row| | |
%p= row | |
- row.each do |element| | |
%p= element | |
%form{:method => "POST", :action => '/request_print'} | |
%input{:type => "hidden", :name => "_method", :value => "PUT"} | |
%input{:type => "text", :name => "name"} | |
%input{:type => "text", :name => "title"} | |
%input{:type => "text", :name => "message"} | |
%input{:type => "submit"} |
3.入力データを表示(request_print.haml)
3.1
入力されたデータを画面で確認する部分を作成する。
ソースコードは以下の通り作成した。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
!!! | |
%html{:lang => "ja"} | |
%head | |
%title Request Print | |
%body | |
%p リクエストのHTTPメソッドと実行パス | |
%p | |
= "method = #{@request_method}" | |
= "url = #{@request_url}" | |
= "path = #{@request_path}" | |
%p 入力フォームのテキストボックスから入力されたデータ | |
%p | |
= "TextBox(name) = #{@name}" | |
= "TextBox(title) = #{@title}" | |
= "TextBox(message) = #{@message}" |
4.説明&実行
4.1
Ruby側についての説明
データの取得の仕方は、
「params[:inputタグのnameの値]」で取得できる。
また、直接(?)Webリクエストの内容からも取得できた。
「request[:inputタグのnameの値]」でも取得できた。
現状、使い分けがどうなっているのか分からない。
しかし、Sinatraの本家サイトではルーティングの説明の後に
paramsでデータを取得をしている部分があるので、
おそらくparamsを使っていれば問題はないと思う。
4.2
Haml側についての説明
index.hamlについての説明。
Hamlでは、inputタグを以下のように記述する。
「%input{:type => "text", :name => "name"}」
typeにinputの種類(今回はテキストボックス)を、
nameにはparamsで取得するための名前を設定している。
inputタグの詳しい設営はhtmlのドキュメントか説明サイトを参照にして下さい。
request_print.hamlの説明は表示のみなのでなし。
4.3
以下のコマンドで実行する。
コマンド: ruby sinatra_start.rb
画面下部に入力フォーム3つとボタンが出ていることを確認し、
適当な文字を入力フォームに入力する。
送信ボタンを押下する。
ページ遷移し、入力した値が表示されていれば問題ない。
以上!!
参考にさせて頂いたサイト
Sinatra本家(日本語訳)
管理人の独り言...
これで、パーツは概ね問題ないかな...?
まだ、DBやらActiveRecordだとかあるけど、
修正でプログラムすればいいし大丈夫だろう。
というわけで、ようやっと掲示板の作成に取り掛かれます。
内容的には、Webの基本中の基本的な内容なので、
あまり過度な期待はしないで下さい。
管理人の独り言...
これで、パーツは概ね問題ないかな...?
まだ、DBやらActiveRecordだとかあるけど、
修正でプログラムすればいいし大丈夫だろう。
というわけで、ようやっと掲示板の作成に取り掛かれます。
内容的には、Webの基本中の基本的な内容なので、
あまり過度な期待はしないで下さい。