简体   繁体   English

Ruby on Rails-通过link_to中的javascript刷新span标签

[英]Ruby on Rails - span tag refresh by javascript in link_to

I have a span tag which is refreshed by javascript. 我有一个span标记,可通过javascript刷新。 So in my view, this code will display the number : 所以在我看来,这段代码将显示数字:

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

The javascript looks like : javascript看起来像:

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

Now I want to use this value in a link_to to create an object : 现在,我想在link_to中使用此值来创建一个对象:

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

If I inspect my element I get : 如果我检查我的元素,我得到:

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

And, it returns me an error because span tag is considered as text not html tag : 而且,它返回一个错误,因为span标签被认为是文本,而不是html标签:

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

What is the best way to do what I'm trying to do ? 做我想做的最好的方法是什么?

Thanks 谢谢

Ruby is server-side and can't view the result of what JavaScript does client-side, so you can't do this without some help from JavaScript. Ruby是服务器端的,无法查看JavaScript在客户端执行的操作的结果,因此,如果没有JavaScript的帮助,就无法做到这一点。 I would suggest adding an id to your element from Rails such as 我建议从Rails中向您的元素添加一个ID,例如
id: "purchaseIt"
and add an HTML5 data attribute to your anchor: 并将HTML5数据属性添加到锚点:
data-nbr="nojs"
then update the element from JavaScript with what you need: document.getElementById('purchaseIt').setAttribute('data-nbr','1'); 然后根据需要使用JavaScript更新元素: document.getElementById('purchaseIt').setAttribute('data-nbr','1');

I used Ajax to resolve my problem. 我使用Ajax解决了我的问题。

In my javascript : 在我的javascript中:

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

In my view : 在我看来 :

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

In my controller : 在我的控制器中:

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

I also used purchases. 我也用过购买。 create instead of purchases. 创建而不是购买。 build 建立

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

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