2017-03-14 15 views
0

私はremote:trueオプションを持っています。Rails | js.erbファイルでハッシュにアクセスする方法

def get_user_info 
... 

respond_to do |format| 
    if !response.nil? 

      r = response.to_hash 
      @data = {:IsLoggedIn => true, :ErrorMessage => "", :response => r } 
    else 

     error = "There is an error occurred."    
     @data = {:IsLoggedIn => false, :ErrorMessage => error, :response => "" }   
    end 
    format.js { render :json => @data } 
    format.html 
    end 
end 

は、その後、私は私のget_user_info.js.erbを持っていると私はそれににErrorMessageにアクセスしたいと思います。

私は試してきましたが、console.log('try')も動作していません。

私の目的は、エラーメッセージまたはr(応答)を本文に添付することです。しかし、@data変数にはアクセスできません。

+0

'get_user_info.js.erb'の内容は何ですか? –

+0

テンプレートファイルです。コントローラから返された情報を処理します。 –

答えて

1

にあなたは(私は推測)何をしたい達成するために3つのステップがあります。

まず:あなたはビューで、その後に送信し、受信したいものに、あなたのコントローラにデータを設定します。

# _controller.rb 

def method_name 
    if !response.nil? 
    r = response.to_hash 
    @data = {:IsLoggedIn => true, :ErrorMessage => "", :response => r } 

    # response = response.to_hash 
    # @data = {is_logged_in: true, error_message: '', response: response } 
    else 
    error = "There is an error occurred."    
    @data = {:IsLoggedIn => false, :ErrorMessage => error, :response => "" }   
    end 

    format.js 
    format.html 
end 

第二:方法によって送信されたデータを受信するためにjs.erbファイルを作成しますコントローラ:

# method_name.js.erb 

console.log("<%= escape_javascript(@data[:ErrorMessage]) %>") 

ここでは、成功したかどうかをテストするために受け取った内容をコンソールに表示します。

サード:AJAXを使用してビュー内のデータを取得する機能を発射:

# method_name.html.erb 

<script> 
    $.ajax({ 
     type: 'GET', 
     url: '/<method_name>', 
     dataType: 'script' 
    }); 
</script> 

はそれがお役に立てば幸いです。

だけに言及:

あなたのハッシュキーが記号であるとき、ここで述べたようにあなたは?ハッシュリテラル構文を使用していないのはなぜhttps://github.com/bbatsov/ruby-style-guide#hash-literals

名前により表現方法を使用していないのはなぜ

あなたの変数?ここで述べたようにhttp://www.itiseezee.com/?p=83

0

変更アクション

respond_to do |format| 
    # Rest of the code as it is 
    # ... 
    format.js 
    format.html 
end 

get_user_info.js.erb

$(".myDiv").html("<%= @data[:ErrorMessage] %>"); 
関連する問題