質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.51%
Ruby

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

664閲覧

erbを使ってRubyコードをHTMLに埋め込みたい

satosikyd

総合スコア11

Ruby

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/01/01 15:15

###前提・実現したいこと
練習でERBを使ってRubyコードをHTMLに埋め込もうとしています。

###発生している問題・エラーメッセージ
実行され、名前は表示されるのです年齢が表示されません。

###該当のソースコード

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>タイトル</title> </head> <body> <form action="/" method="POST"> <label>名前: <input type="text" name="target_name"></label> <label>年齢: <input type="text" year="target_year"></label> <input type="submit" value="送信"> </form> <% name = params['target_name'] %> <% time_japan = Time.now.getlocal("+09:00") %> <% year = params['target_year'] %> <p>今は<%= time_japan.hour %>時です。</p> <% if 6 <= time_japan.hour && time_japan.hour < 12 %> <p>おはよう、<%= name %>さん(<%= year%>歳)</p> <% elsif 12 <= time_japan.hour && time_japan.hour < 18 %> <p>こんにちは、<%= name %>さん(<%= year%>歳)</p> <% else %> <p>こんばんは、<%= name %>さん(<%= year%>歳)</p> <% end %> </body> </html>

ruby

1require 'sinatra' 2 3get '/' do 4 erb :index 5end 6post '/' do 7 erb :index 8end

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

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

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

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

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

guest

回答2

0

ベストアンサー

name と指定するところを year と typo しているように見えます

html

1<input type="text" year="target_year">

View にロジックが入れ込んであるのは可読性を損ねるので、極力 Sinatra 側に寄せたほうが良いでしょう

ruby

1require 'sinatra' 2 3def set_greeting_message 4 hour = time_japan 5 name = params['target_name'] 6 age = params['target_age'] 7 8 message_prefix = 9 if (6..11).cover?(hour) 10 'おはよう' 11 elsif (12..18).cover?(hour) 12 'こんにちは' 13 else 14 'こんばんは' 15 end 16 17 base_message = "、#{name}さん(#{age}歳)" 18 19 @greeting = "#{message_prefix}#{base_message}" 20end 21 22def time_japan 23 @time_japan = Time.now.getlocal('+09:00').hour 24end 25 26# set_time_japan で呼び出されたときに time_japan を呼び出す 27alias set_time_japan time_japan 28 29get '/' do 30 set_time_japan 31 erb :index 32end 33 34post '/' do 35 # 描画前にインスタンス変数をセット 36 set_time_japan 37 set_greeting_message 38 39 erb :index 40end

erb

1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>タイトル</title> 6 </head> 7 <body> 8 <form action="/" method="POST"> 9 <label>名前: <input type="text" name="target_name" value="foo"></label> 10 <label>年齢: <input type="text" name="target_age" value="12"></label> 11 <input type="submit" value="送信"> 12 </form> 13 14 <!-- セットしたインスタンス変数を出力で使う --> 15 <p>今は<%= @time_japan %>時です。</p> 16 <p><%= @greeting %></p> 17 </body> 18</html>

何か参考になれば幸いです

Links

投稿2018/01/02 01:14

編集2018/01/02 01:18
gouf

総合スコア2321

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

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

satosikyd

2018/01/02 02:14

解決しました。ありがとうございます
guest

0

<label>年齢: <input type="text" year="target_year"></label>

ここが問題です

lang

1<label>年齢: <input type="text" name="target_year"></label>

が正しいです

投稿2018/01/02 01:00

asm

総合スコア15147

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問