如何在 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 / chef 中打印 git latest_tag 命令的值