我想通过ajax请求将JavaScript变量分配给ruby变量,所以我在JavaScript函数中编写了以下代码:
var timezone = jstz.determine();
var encoded = encodeURIComponent('<%= groups_path%>'+'?@myActivity=' + <%=@activity.id%>+'&time_zone='+timezone.name());
$.ajax({
type: "get",
url: encoded,
dataType: "JSON",
success: function(data)
{
<%=@timezone=params[:time_zone]%>
}
});
但是它给出了GET http://0.0.0.0:3001/%2Fgroups%3F%40myActivity%3D1%26time_zone%3DAsia%2FCalcutta 404 (Not Found)
错误。
答案 0 :(得分:0)
你的东西有些混乱。
您尝试运行的javascript,我认为,将在客户端运行。你那边没有Ruby,只在服务器端。
您通常做的是,编写Javascript,然后在视图中呈现(这意味着它将被发送到客户端)。 您可以通过将预定义值(如路径)命名为my_client_side_code。 js.erb 来将其插入模板中。
当您向服务器发出AJAX请求时,您可以从服务器向客户端写入响应(在Javascript中)。 这使得客户端可以评估您在服务器响应中提供的任何Javascript。在这种情况下,您可以以通常的ERB方式使用Ruby变量。
http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html 有关完整指南,您可以参考导轨指南!
祝你好运!答案 1 :(得分:0)
法会,
你做错了什么,你对javascript语言和Ruby语言不太了解。
当您在浏览器中看到JS代码时,您会看到如下所示
$.ajax({
type: "get",
url: encoded,
dataType: "JSON",
success: function(data)
{
}
});
因为<%=@timezone=params[:time_zone]%>
是在将html页面呈现给浏览器之前运行的Ruby代码,所以会有静态JS和HTML脚本将呈现给浏览器
首先尝试了解Ruby和Javascript以及HTMl的流程,你可以更好地理解