Rails - 可以在javascript函数中设置Rails变量吗?

Ren*_*eno 3 ruby-on-rails

在javascript函数中设置Rails变量有什么问题吗?我无法谷歌一个definete的答案,只是想确保没有我不知道的捕获或缺陷.我真的很困惑这是如何工作的 - 如果在客户端执行javascript,我不会假设Rails会在视图渲染后响应视图中的变量..?

(示例)我有多个函数调用相同的表单,我需要知道哪个函数称为表单在控制器方法中执行特定任务(在这种情况下会话是一个cookie,但我也尝试了一个本地Rails变量,它同样有效).

<script type="text/javascript">

    $('.open_new_item_form' ).click(function(){
     alert('<%= session[:item_form_type]%>');
        <% session[:item_form_type] = "from_new_item_click" %>
     alert('<%= session[:item_form_type]%>');
        var url = $(this).attr("href");
        $.ajax({
etc...
Run Code Online (Sandbox Code Playgroud)

警报似乎表明它运作良好.它将使用当前的valute警告,然后在set之后发出新的"from_new_item"值.

谢谢 - 只是确定

sar*_*old 6

您的erb文件正在服务器上完全解释; 此行将作为呈现javascript的一部分执行,而不是在客户端上执行javascript时:

    <% session[:item_form_type] = "from_new_item_click" %>
Run Code Online (Sandbox Code Playgroud)

如果将此行代码放在if评估为的javascript 块中false,则服务器端变量仍将更改:

    if(0){<% session[:item_form_type] = "from_new_item_click" %>;}
Run Code Online (Sandbox Code Playgroud)

(原谅我的pidgin -javascript,它不是我说的语言.)