我有一个由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标记被视为text而不是html标记:
{"_method"=>"create",
"authenticity_token"=>"7CC6I1HrmFZcT2Qrkriafago1ZGhizX4cJL+FaSyRkw=",
"nbr"=>"<span>actual_nbr</span>"}
做我想做的最好的方法是什么?
由于
答案 0 :(得分:0)
Ruby是服务器端的,无法查看JavaScript在客户端的结果,因此如果没有JavaScript的帮助,您无法做到这一点。我建议您在Rails中为您的元素添加一个ID,例如为id: "purchaseIt"
,然后为您的主播添加HTML5数据属性:
data-nbr="nojs"
然后使用您需要的内容更新JavaScript中的元素:document.getElementById('purchaseIt').setAttribute('data-nbr','1');
答案 1 :(得分:0)
我使用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
我还使用了购买。创建而非购买。 build