RubyonRails-通过link_to中的javascript刷新span标记

Ruby on Rails - span tag refresh by javascript in link_to

本文关键字:javascript 刷新 span 标记 中的 to 通过 link RubyonRails-      更新时间:2023-09-26

我有一个由javascript刷新的span标记。所以在我看来,这个代码将显示数字:

<span id="actual_nbr"></span>   # Show the number via javascript

javascript看起来像:

document.getElementById("actual_nbr").innerHTML = 1;

现在我想在link_to中使用这个值来创建一个对象:

<%= link_to "OK", { :action => "create", :nbr => content_tag(:span, 'actual_nbr') }, :confirm => "Are you sure?", :method => :create %>

如果我检查我的元素,我会得到:

<a confirm="Are you sure?" data-method="create" href="/purchases?nbr=%3Cspan%3Eactual_nbr%3C%2Fspan%3E" rel="nofollow">OK</a>

而且,它给我返回了一个错误,因为span标签被认为是文本而不是html标签:

{"_method"=>"create",
 "authenticity_token"=>"7CC6I1HrmFZcT2Qrkriafago1ZGhizX4cJL+FaSyRkw=",
 "nbr"=>"<span>actual_nbr</span>"}

做我想做的事情最好的方法是什么?

感谢

Ruby是服务器端的,不能查看JavaScript在客户端做什么的结果,所以如果没有JavaScript的帮助,你就无法做到这一点。我建议从Rails(如
id: "purchaseIt"
)向元素添加一个id,并向锚点添加一个HTML5数据属性:
data-nbr="nojs"
,然后用您需要的内容从JavaScript更新元素:document.getElementById('purchaseIt').setAttribute('data-nbr','1');

我使用Ajax来解决问题。

在我的javascript中:

function submitForm() {
      $.ajax({
           type:'POST', 
           url: '/purchases', 
           data: $.param({ purchase: {id: variable_id, nbr: variable_nbr }})
      });
 }

在我看来:

<button type="button" onclick="submitForm()">Send data</button>

在我的控制器中:

def create
        Rails.logger.debug "***************************************"
        Rails.logger.debug params
        Rails.logger.debug "***************************************"
        @purchase = current_user.purchases.create(purchase_params)
        if @purchase.save
            redirect_to @purchase.paypal_url(user_path(current_user), purchase_params[:id], purchase_params[:nbr])
        else
            redirect_to(root_url)
        end
    end

我也用过购物创建而不是购买构建