我有这个计划: JS:
jQuery.validator.addMethod(
"check_membership",
function() {
console.log('A');
$.ajax({
type: "POST",
url: "/subscriptions/check_validity",
dataType:"JSON",
data: {coupon: "12345"},
});
console.log('<%= @aaa %>');
},
"mmmmm"
);
和Rails行动:
def check_validity
@aaa = 'xxx'
respond_to do |format|
format.js { render :text => @aaa }
end
end
我的目标是在Javascript中显示来自Rails的值 - @aaa
,但输出
console.log('<%= @aaa %>');
只是一个空白......
但我不确定这里应该采用什么样的工作流程(我需要传递一种信息,例如&#34;是&#34; /&#34;不&#34;)。
谢谢你们!
答案 0 :(得分:1)
Ajax将数据的params
变量发送到控制器,就像新记录的表单一样。在您的示例中,要检索优惠券值,您将params传递给您在ajax调用中建立的密钥:
def check_validity
value = params[:coupon] # returns "12345"
...
end
如另一个答案所述,这不会在您的console.log或javascript中的任何位置产生@aaa值。这些变量在服务器方面进行解释,但javascript仅适用于客户端方面(除非您使用服务器端javascript,但那是&#39; sa马不同的颜色)。这可能会让人感到困惑,因为我们在视图中使用Ruby变量,但在将视图发送到客户端之前,会在服务器上解释视图。 Javascript不是。
将变量传递给Rails后,通过params值,您需要将任何新信息发送回客户端,这看起来像是您尝试使用:text => @aaa
。有很多方法可以解决这个问题,但你可以从Railscast开始:
http://railscasts.com/episodes/324-passing-data-to-javascript
以及
答案 1 :(得分:0)
console.log('<%= @aaa %>');
混合服务器端和客户端的东西。如果你
render :text => @aaa
在rails中,你不会在浏览器中获得名为@aaa的变量。
我建议将json渲染到浏览器......