🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

1回答

2069閲覧

【至急】:誰でもいいので回答お願い致します。質問:Ruby言語:プログラムとデータベースが連携したWebアプリケーション上で、データベースに保存された書籍の題名データが表示されない。

Marchan4

総合スコア15

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

1クリップ

投稿2021/03/21 02:51

編集2021/03/21 06:20

使用環境はrubyバージョン3.0.0, mysqlバージョン5.7, mysql2バージョン0.5.3, bundlerバージョン2.2.3です。
使用機器macOS Big Sur バージョン11.2.2です。使用中のテキストエディタはAtomです。 

mysql2バージョン0.5.3がインストールされた時のメッセージが以下の通りです。

$ sudo gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/' -- --with-cppflags=-I/usr/local/opt/openssl@1.1/in clude --with-ldflags=-L/usr/local/opt/openssl@1.1/lib Password: Building native extensions with: '--with-cppflags=-I/usr/local/opt/openssl@1.1/include --with-ldflags=-L/usr/local/opt/openssl@1.1/lib' This could take a while... Successfully installed mysql2-0.5.3 Parsing documentation for mysql2-0.5.3 Done installing documentation for mysql2 after 0 seconds 1 gem installed $ bundle install Using bundler 2.2.3 Using mysql2 0.5.3 Following files may not be writable, so sudo is needed: /Users/ユーザ名/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/build_info /mysql2-0.5.3.info Bundle complete! 1 Gemfile dependency, 2 gems now installed. Use `bundle info [gemname]` to see where a bundled gem is installed.

今、データベースに保存された書籍の題名データを表示するbooklistというWebアプリケーションを作成させていただいており、肝心なデータベースに保存された書籍の題名データを表示させて頂くことができない上にbookilistというWebアプリケーションが起動しませんでした。

そのbooklistというWebアプリケーションのソースコードが以下の通りです。

booklist/views/booklist.erbは以下の通りです。

<html lang="ja"> <head> <meta charset="utf-8"> <title>Booklist</title> </head> <body> <%# フォームデータ送受信確認用コード(本番では削除) %> <div style="background-color: skyblue;"> <p>動作確認用: <%= params %></p> </div> <a href="/"><h1>Booklist</h1></a> <h2>書籍の登録フォーム</h2> <form action="/" method="POST"> <input type="text" name="book_title" placeholder="書籍タイトルを入力" required> <input type="submit" name="submit_add_book" value="登録"> </form> <h2>登録された書籍一覧</h2> <ul> <%# <% @records.each do |record| %> %>←コメントアウトされたため表示されない <%# <li><%= ERB::Util.html_escape(record['book_title']) %></li> %>←コメントアウトされたため表示されない <%# <% end %> %>←コメントアウトされたため表示されない </ul> </body> </html>

booklist/app.rbは以下の通りです。

require 'sinatra' require 'mysql2' get '/' do client = Mysql2::Client.new(host: 'localhost', username: 'root', database: 'booklist', encoding: 'utf8') @records = client.query("SELECT * FROM books ORDER BY created_at DESC") erb :booklist end post '/' do client = Mysql2::Client.new(host: 'localhost', username: 'root', database: 'booklist', encoding: 'utf8') # 書籍タイトルの保存 book_title = params['book_title'] statement = client.prepare('INSERT INTO books (book_title) VALUES(?)') statement.execute(book_title) # 書籍タイトルの一覧取得 @records = client.query("SELECT * FROM books ORDER BY created_at DESC") erb :booklist end

booklist/create_table_booklist.sqlは以下の通りです。

CREATE TABLE booklist.books ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, book_title VARCHAR(100), created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP );

以下がbooklistデータベースのbooksテーブルのデータ(レコード)です。

mysql> SELECT * FROM books; +----+-----------------------------------------------------------+---------------------+ | id | book_title | created_at | +----+-----------------------------------------------------------+---------------------+ | 1 | 非エンジニアのためのプログラミング講座 | 2021-03-17 14:16:40 | | 2 | プログラミングRuby | 2021-03-17 14:17:30 | | 3 | 入門HTML5 | 2021-03-17 14:18:12 | +----+-----------------------------------------------------------+---------------------+ 3 rows in set (0.01 sec)

あとコメントアウトさせて頂いたソースコードは以下の通りです。

booklist/views/booklist.erbの19行目から21行目

<%# <% @records.each do |record| %> %> <%# <li><%= ERB::Util.html_escape(record['book_title']) %></li> %> <%# <% end %> %>

上記のソースコードをコメントアウトさせて頂いたら、データベースに保存された書籍の題名データが表示しないもののbooklistというWebアプリケーションが起動しました。

逆に上記のコメントアウトされたソースコードから<%# %>の部分を外させて頂いたらbooklistというWebアプリケーションが起動しない上に、データベースに保存された書籍の題名データが表示されませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/03/21 03:08

rbenv を使ってるなら sudo gem install する必要はないはず…。
m.ts10806

2021/03/21 03:56

細かいこと言って申し訳ないですが 「させて頂いた」といってもあくまで自身で勝手にやっているわけで、回答者のためにやっているわけではないので その辺の文言は調整されたほうが良いです。
fiveHundred

2021/03/21 06:55

「【至急】」なんて書いても変わらない(むしろ回答を避けられる)し、それだけで質問を上げるのはどうかと思うのでやめてください。
dodox86

2021/03/21 07:49

一見へり下った文章になっているっぽいですが、要は無償の作業依頼ですね。なぜ、"至急"の要請に応えなければならないのか。過去質問でも回答をいただいているのに放置されています。ここは無料のよろずプログラミングお助けサイトではありません。
quickquip

2021/03/21 08:22

質問が書かれてないように見えます。
m.ts10806

2021/03/21 09:48

修正依頼でここまで酷くなったのは久しぶりです。
guest

回答1

0

<%= ERB::Util.html_escape(record['book_title']) %>

<%= record['book_title'] %> にしてみてはどうか,と提案させていただきます。

投稿2021/03/21 10:38

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問