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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

208閲覧

Javascript のオブジェクトは Ruby ではどう書くのか

kimurayu

総合スコア158

Ruby

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/10/20 01:35

編集2017/10/20 12:32

Javascript のオブジェクトは Ruby ではどのように表現するのでしょうか?できるだけ簡素な記述をしたいです。

Rubyバージョン: 2.4.2

javascript

1 2var A = { 3 a: 'a', 4 b: 'b', 5 c: 'c' 6};

Ruby ?

そのまま書いたら、 Internal Server Error になりました。

ruby

1index.rb 2 3#!/usr/bin/ruby 4puts "Content-type: text/html\n\n" # ヘッダ(データの情報)を出力 5puts # 仕切りとして、空行を出力 6a = { 7 a: 1, 8 b: 2 9} 10puts a.b 11 12 13 14 15
Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. Apache/2.2.15 (Red Hat) Server at hogehoge.jp Port 80

ruby

1a = { 2a: 'a', 3b: 'b', 4c: 'c' 5}

の時点でエラーになりました。

ruby

1a = {}; 2a[:b] = 'b' 3a[:c] = 'c'

とやるとできました。これでも良いのでしょうか。そもそもエラーになることがおかしいでしょうか。

動かなかった原因:
cgi で実行するruby が1.8.7 になっていました。

ruby

1puts RUBY_VERSION #=> 1.8.7

ruby

1a = { 2a: 'a', 3b: 'b', 4c: 'c' 5}

の記法が実装されたのが1.9からだからです。
cgiで実行するrubyのバージョンを直す方法がまだわかりませんが目的の質問が解決したため解決済みとします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Ruby側でどのように使うかにもよりますが、ほぼそのまま書いても通ります。

ruby

1a = { 2 a: 'a', 3 b: 'b', 4 c: 'c' 5}

投稿2017/10/20 01:45

maisumakun

総合スコア145183

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

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

kimurayu

2017/10/20 05:03

すみません、エラーになりました。本文に記載しました
maisumakun

2017/10/20 05:23

中身へのアクセスは、「a[:b]」という形式で行うこととなります。
kimurayu

2017/10/20 05:37 編集

再び本文に記載しました。
maisumakun

2017/10/20 06:07

もしかしてですけど、Ruby 1.8以下という、ものすごく古いRubyを使っていたりします?
maisumakun

2017/10/20 06:14

CGI経由ではなくて、コンソールから実行した場合にはどんなエラーとなりますか?
kimurayu

2017/10/20 06:17

a = { a: 1, b: 2 } puts a.b で `<main>': undefined method `b' for {:a=>1, :b=>2}:Hash (NoMethodError) こうなりました。
kimurayu

2017/10/20 06:18

間違えました
kimurayu

2017/10/20 06:18

puts a[:b]はできました。
kimurayu

2017/10/20 06:23

webの時だけエラーになります
maisumakun

2017/10/20 06:32

自力でヘッダーまで出力するような場合、レスポンスの最初は「HTTP/1.1 200 OK」のようなステータスが必要かと思います。
kimurayu

2017/10/20 12:27

原因が分かりました。cgi を実行する ruby のバージョンが1.8.7 でした。直し方を探します。その他おっしゃる通りでした。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問