1

Sunspot solrをJSONとして使用してRailsアクションからジョブ検索結果を取得し、JSONデータを解析してJavascriptを使用してHTML要素を作成することでクライアント側で結果ビューを作成していますが、応答JSONからはジョブの関連付けを取得できませんオブジェクト、つまり、応答JSONのcompany_idフィールドを使用して、埋め込まれたrubyタグを使用してjavascript自体から会社にアクセスしようとしています。

  function submitForm() {
   var valuesToSubmit = $('#FRM_JOB_SEARCH').serialize();
    jQuery.ajax({
    type: "POST",
    url: $('#FRM_JOB_SEARCH').attr('action'),
    data :valuesToSubmit,
    success : function(json){
      var data = JSON.parse(json);
          $.each(data, function(key, val) {
                          create_blocks(key , val);
        });
    } ,
    dataype : 'json' ,
    remote : true });

    }

  function create_blocks(key , value) {
       var feeds = eval(value)
          var company_id = feeds["company_id"];
          var company_name = '<%= Company.find_by_id('company_id').name %>';
          console.log(company_name);
   }

ただし、この変数にはERBタグ内ではアクセスできません。RAILSerbタグ内のjavascript変数にアクセスするにはどうすればよいですか。

4

2 に答える 2

0

javascriptはクライアント側にあり、erbはサーバースライドにあるため、これを行うことはできません。

通常、ある変数をerbに渡したい場合は、特定のアクションでその変数をコントローラーでフェッチし(必要に応じて)、そのデータをerbに渡すことができます。

あなたはそれをどのように行うことができるかここでレールキャストを見ることができます。

于 2013-03-14T09:01:19.587 に答える
0

Aleksが言ったように、コールバックで呼び出される関数でrubyコードを使用しているため、これを行うことはできません。やりたいことを実現する最も簡単な方法は、サーバーから取得したjsonデータで会社名を渡すことです。

to_jsonjson応答のレンダリングに使用している場合は、次のことを試してください

 render json: @records.to_json(methods: [:company_name])

次に、モデルにcompany_nameメソッドを追加します

 def company_name
   company.name
 end
于 2013-03-14T13:38:43.493 に答える