繁体   English   中英

如何在Rails ERB标签中调用JavaScript变量

[英]How to call a javascript variable inside Rails ERB tag

我通过使用Sunspot solr作为JSON从Rails动作中获得Job搜索结果,并通过解析JSON数据并使用Javascript创建HTML元素在客户端中创建结果视图,但是从响应JSON中我们无法获得Job Association对象,因此,通过使用响应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标签中无法访问此变量。如何在RAILS erb标签中访问javascript变量。

您不能这样做,因为javascript在客户端,而erb在服务器幻灯片上。

通常,如果要将变量传递给erb,则可以通过特定操作在控制器中获取该变量(如果愿意),然后将该数据传递给erb。

您可以在此处查看如何进行广播。

正如Aleks所说,您无法做到这一点,因为您在回调函数中使用了Ruby代码。 实现目标的最简单方法是在从服务器获取的json数据中传递公司名称。

如果您使用to_json来呈现json响应,请尝试以下操作

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

然后在模型中,添加company_name方法

 def company_name
   company.name
 end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM