如何在 Ruby 代码中打印 JavaScript 变量

Posted

技术标签:

【中文标题】如何在 Ruby 代码中打印 JavaScript 变量【英文标题】:How to print a JavaScript variable within Ruby code 【发布时间】:2020-08-01 09:10:59 【问题描述】:

我有一个单选按钮列表,根据用户选择的单选按钮,应该显示一个按钮。

  <div class="cobrado-anualmente-label">
    <div class="radio_seleccion_anual_payment margin-bottom-70">
      <div class="radio billed-anual_60-radio">
        <input id="plan_pro_talent" class="radio_money_value" name="radio-anual-payment-type" type="radio">
        <label for="radio-anual_60"><span class="radio-label"></span>$60</label>
      </div>

      <div class="radio billed-anual_100-radio">
        <input id="radio-anual_100" class="radio_money_value" name="radio-anual-payment-type" type="radio">
        <label for="radio-anual_100"><span class="radio-label"></span>$100</label>
      </div>

      <div class="radio billed-anual_250-radio">
        <input id="radio-anual_250" class="radio_money_value" name="radio-anual-payment-type" type="radio">
        <label for="radio-anual_250"><span class="radio-label"></span>$250</label>
      </div>

      <div class="radio billed-anual_500-radio">
        <input id="radio-anual_500" class="radio_money_value" name="radio-anual-payment-type" type="radio">
        <label for="radio-anual_500"><span class="radio-label"></span>$500</label>
      </div>
    </div>
  </div>

我正在尝试使用 javascript 生成按钮以避免多次重复相同的代码(有很多按钮)。目前在 ruby​​ 中按钮是这样处理的:

  <%= button_tag "Contribute $60 a month", class: 'radio-anual_60 no_me_veo payment-action btn-plan button full-width margin-top-20', data: plan: @plan_pro_talent.id,key: @plan_pro_talent.name,month: @plan_pro_talent.monthly_amount,year: @plan_pro_talent.yearly_amount,plan_title: t('plan.plan3-titulo1') || ''  %>

必须在选择单选按钮选项时生成按钮

当我尝试在 ruby​​ "" 中显示 javascript 变量的内容时,它不允许我访问该变量。我得到了一个与我的 ruby​​ 变量同名的单选按钮的 id。我正在尝试以下方法:

      <script>

        $( ".radio_money_value" ).click(function() 

         var newDiv = $("<button name='button' type='submit' class='payment-action btn-plan button full-width margin-top-20' data-plan='<%=@"'"+this.id+"'".id%>'>Contribute $250 a month</button>");

         $('.btns-stripe').append(newDiv);
        );
      </script>

有没有办法在 ruby​​ 中打印 javascript 变量的值?

【问题讨论】:

【参考方案1】:

Ruby 在你的服务器上运行,JavaScript 在浏览器中运行,在不同的地方,不同的时间;你无法回到过去。

但是为什么你甚至需要它呢?您可以访问 JavaScript 变量...嗯... JavaScript。

var newDiv = $("<button blah-blah-blah-blah data-plan='" + this.id + "'>blah-blah</button>")

或者更好一点(使用反引号`` 构建模板字符串):

var newDiv = $(`<button blah-blah-blah-blah data-plan="$this.id">blah-blah</button>`)

【讨论】:

我明白了。在生成按钮时,我真的需要它来保存一些代码,获取与 ruby​​ 变量同名的所选单选按钮的 id,这样我就可以根据单选按钮的 id 打印 ruby​​ 变量的值 我不太明白你的意思...哪个 ruby​​ 变量? 在控制器中我有一个包含计划信息的变量,然后它将采用与我的控制器变量同名的单选按钮的 id,这样就能够在按钮的生成器中打印它。 这对我来说仍然有点混乱,但也许你想要的只是检查当前生成的单选按钮的 ID 是否等于你正在寻找的 ID?在 Ruby 中,我的意思是。不在任何 JavaScript 块内。 (但同样,我不明白您的意思,也许您可​​以编辑您的问题以更好地解释用例,并举例说明您的意思是什么变量,它的值可能是什么以及您期望生成的最终结果是什么html 输出)

以上是关于如何在 Ruby 代码中打印 JavaScript 变量的主要内容,如果未能解决你的问题,请参考以下文章

如何让 ruby​​ 打印完整的回溯而不是截断的回溯?

如何在我的视图中打印 JavaScript 代码?

如何在 ruby​​ / chef 中打印 git latest_tag 命令的值

Ruby如何打印/放置读取的文件内容而不是一堆数字/符号

如何在 Rust 中打印变量并让它显示有关该变量的所有内容,例如 Ruby 的 .inspect?

如何让这个 Javascript 字谜算法在 Ruby 中工作?