RubyのSinatraで簡易ログインシステムを実装しています。
ログイン中だとトップページに「ログイン」「アカウント作成」のリンクを表示せず、その他の場合はそれら2項目を表示するといったことを行いたいのですが、以下のコードでエラーが出てしまいます。
main.rb
ruby
1require 'sinatra' 2require 'sinatra/reloader' 3require 'active_record' 4require 'sqlite3' 5 6ActiveRecord::Base.establish_connection( 7 "adapter" => "sqlite3", 8 "database" => "./login.db" 9) 10 11class User < ActiveRecord::Base 12end 13 14enable :sessions 15 16get "/" do 17 session[:id] = 1 18 if session.has_key?(:id) || session[:id] != 0 19 @user_name = User.find(session[:id]).user_name 20 else 21 @user_name = "ゲスト" 22 end 23erb :index 24end 25
index.erb
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <mata charset="utf-8"> 5 <link rel="stylesheet" href="/style.css" /> 6 <title>トップページ</title> 7</head> 8<body> 9 <h1>トップページ<br> 10 ようこそ、<%= @user_name %>さん</h1> 11 <% if @user_name == "ゲスト"%> 12 <%= "<a href="/login">ログイン</a><br>" %> 13 <%= "<a href="/signup">アカウント作成</a>" %> 14 <% end %> 15</body> 16</html>
エラー内容
<SyntaxError: /Users/xxx/Documents/sinatra/simple_login/views/index.erb:12: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '(' ..._out_buf.<<(( "<a href="/login">ログイン</a><br>" ).to_s... ... ^ /Users/xxx/Documents/sinatra/simple_login/views/index.erb:13: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '(' ...out_buf.<<(( "<a href="/signup">アカウント作成</a>" )... ... ^>
自身の見解
おそらく自分の中では <%= %>の埋め込みコードの中にHTMLタグを入れているのがまずいかなと
考えています。しかし、この埋め込みコードを使わずに上記の機能を実装するやり方が思い浮かばずにいます。
お力をお貸ししてください、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/01 03:39 編集
2019/09/01 06:19