2017-04-04 11 views
0

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として

+0

あなたはこの要求を処理するように設定し、コントローラを持っていますか?そのようなルートファイルにすべてのコードを入れるのは良い習慣ではありません。これはコントローラメソッドによって処理されるはずです。 – ellitt

+0

いいえ、私はしません。コントローラがどのように見えるかはわかりません。ノードでは、私は通常ルートに私の要求をダンプするので、私はここで問題を参照していない。私が提供したファイルは、ノード内のapp.jsに相当するものです。 – Quesofat

+0

Sinatraでは、あなたが話していることは問題ありませんが、私はほとんどのSinatraには慣れていません。あなたはRailsやSinatraアプリを持っていますか? – ellitt

答えて

1

パスisDevModeOn

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 => params[:isDevModeOn]} 
end #end for get 
+0

それは私がそのエラーを過ぎ去らせるのを助けるように思えました。私は今、エラーとしてNil:NilClassのための未定義のメソッド 'result 'を持っています。ドット表記はまだerbでは受け入れられていますか? – Quesofat

+0

今私の見解に何か間違っているようです。 – Quesofat

+0

ただパラメタだけを表示しようとするとどうなりますか?私はHTTPartyをよく知らない – whodini9

関連する問題