erbのインデックスビューにjson応答を渡そうとしています。変数をerbに渡すときの未定義のメソッド
ERBでは、値が真であるかどうかを確認しようとしています。特定のhtmlをレンダリングし、falseの場合はhtmlをレンダリングします。
ルート:
require 'sinatra'
require 'httparty'
require 'erb'
get '/' do
headers = {
"X-Auth-Email" => 'null',
"X-Auth-Key" => 'null',
"Content-Type" => 'application/json'
}
isDevModeOn = HTTParty.get(
'https://api.cloudflare.com/client/v4/zones/null/settings/development_mode',
:headers => headers
)
erb :index, :locals => isDevModeOn
end #end for get
ビュー
<html>
<head>
<title>CloudFlare App</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="css/master.css">
</head>
<body class="container-fluid">
<div class="row">
<div class="col-md-3">
<div style="border: solid 1px black; height: 400px; width: 400px;" class="tile">
<h2>Dev Mode Status</h2>
<% if isDevModeOn.result.value? %>
<span style="background: green;">ON</span>
<a href="#">Turn off Dev Mode</a>
<% else %>
<span style="background: red;">OFF</span>
<a href="#">Turn On Dev Mode</a>
<% end %>
</div>
</div>
</div>
</body>
</html>
応答例
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "development_mode",
"value": "off",
"editable": true,
"modified_on": "2014-01-01T05:20:00.12345Z",
"time_remaining": 3600
}
}
免責事項:私はjavascriptのバックグラウンドを持っているし、多くのことをEJSを使用して、ルビーとかなり経験の浅いです。 PARAMとして
あなたはこの要求を処理するように設定し、コントローラを持っていますか?そのようなルートファイルにすべてのコードを入れるのは良い習慣ではありません。これはコントローラメソッドによって処理されるはずです。 – ellitt
いいえ、私はしません。コントローラがどのように見えるかはわかりません。ノードでは、私は通常ルートに私の要求をダンプするので、私はここで問題を参照していない。私が提供したファイルは、ノード内のapp.jsに相当するものです。 – Quesofat
Sinatraでは、あなたが話していることは問題ありませんが、私はほとんどのSinatraには慣れていません。あなたはRailsやSinatraアプリを持っていますか? – ellitt