Ruby(Sinatra)初心者です。
Sinatraで
http://localhost:4567/browse/9784041003237/3
にアクセスするとエラーが表示されます。
- 48行目などにある、以下のようなコマンドを実行すると戻り値は配列になるのでしょうか。
調べてみても、そもそも execute に関する説明があまり見つかりませんでした。
- 他にも様々なバグを含んでいることはわかっているのですが、場所がわかりません。
これも教えていただけるとありがたいです。
ruby
1data = @db.execute(sql) 2
以下がエラーです。
TypeError at /browse/9784041003237/3 no implicit conversion of Fixnum into Array
以下はソースコードです。
基本部分の.rbファイルとデータベース内容のみです。
必要がありましたら、その都度ソースコードをお伝えしたいと思います。
ruby
1require 'sinatra' 2require 'sqlite3' 3require "sinatra/reloader" if development? 4 5#データベースの準備 6before do 7 @db = SQLite3::Database.new("BookInformation.db") 8end 9after do 10 @db.close 11end 12 13#メインページ 14get '/' do 15 erb :index ,layout: :layout 16end 17 18#閲覧ページ 19get '/browse/:ISBN/:ID' do 20 @ISBN = params["ISBN"].to_i 21 @ID = params["ID"].to_i 22 23 #IDが指定されていなかった場合に、入力されたISBNが結び付けられている中で最後のIDを指定 24 if(!@ID) 25 sql = <<-SQL 26 SELECT id FROM BookInformation WHERE isbn = "#{@ISBN}" 27 SQL 28 data = @db.execute(sql) 29 if (data.empty?) 30 redirect '/' 31 end 32 @ID = data[data.length-1] 33 end 34 35 #IDに結びついているISBNが入力されたISBNと等しいか確認 36 sql = <<-SQL 37 SELECT isbn FROM BookInformation WHERE id = "#{@ID}" 38 SQL 39 data = @db.execute(sql) 40 if(!data.include?(@ISBN)) 41 redirect '/about' 42 end 43 44 #閲覧数更新 45 sql = <<-SQL 46 SELECT views FROM BookInformation WHERE id = "#{@ID}" 47 SQL 48 data = @db.execute(sql) 49 tmp = data.first 50 tmp = tmp + 1 51 52 sql = <<-SQL 53 UPDATE BookInformation SET views = "#{tmp}" WHERE id = "#{@ID}" 54 SQL 55 @db.execute(sql) 56 57 #閲覧ページに移動 58 erb :browse ,layout: :layout 59end 60 61#登録ページ 62get '/registration' do 63 erb :registration ,layout: :layout 64end 65 66#登録作業 67get '/registration/insert' do 68 @isbn = params["isbn"].to_i 69 @title = params["title"] 70 @author = params["author"] 71 @publisher = params["publisher"] 72 @publication_year = params["publication_year"].to_i 73 @publication_month = params["publication_month"].to_i 74 @publication_date = params["publication_date"].to_i 75 76 if (@isbn || @title) 77 sql = <<-SQL 78 INSERT INTO BookInformation(isbn,title,author,publisher,publication_year,publication_month,publication_date) 79 VALUES("#{@isbn}","#{@title}","#{@author}","#{@publisher}","#{@publication_year}","#{@publication_month}","#{@publication_date}"); 80 SQL 81 @db.execute(sql) 82 83 #idの取得 84 sql = <<-SQL 85 SELECT id FROM BookInformation WHERE ROWID = last_insert_rowid(); 86 SQL 87 @id = @db.execute(sql); 88 redirect '/browse/@isbn/@id' 89 else 90 redirect '/registration' 91 end 92 93end 94 95#アプリケーション紹介ページ 96get '/about' do 97 erb :about ,layout: :layout 98end
1|9784044288228||||2009|8|20|1 2|9784044288228|サマーウォーズ|岩井恭平|株式会社角川文庫|2009|8|20|0 3|9784041003237|おおかみこどもの雨と雪|細田守|株式会社角川書店|2012|7|15|1
いくら考えてもわかりません。
どうか解決法をお教えください。
文章がうまくまとまっていなくてすみません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/12 01:47