【问题标题】:How to use a JavaScript variable in erb code in Rails?如何在 Rails 的 erb 代码中使用 JavaScript 变量?
【发布时间】:2012-12-29 08:53:28
【问题描述】:

我有一个 JavaScript 变量:

var selectValUser = $('.select_user :selected').val();

我需要在同一页面的erb代码中使用这个变量,即

<%= get_free_hours_for_user(selectValUser) %>

我该怎么做?

【问题讨论】:

    标签: javascript ruby-on-rails


    【解决方案1】:

    您不能这样做,因为 javascript 在客户端运行,而 ERB 文件中的代码在服务器端运行,您可以使用 ajax 请求发送值, 另外这里有一个很棒的rails cast

    这是一个从 javascript 向控制器发送消息的示例;当用户点击应用时,我们在控制器中有一个操作 'set_id',它会获得电源,进行验证等,在视图中的 'id_message' div 中显示消息。

      $('#apply').live('click', function(event, data, status, xhr) {
        event.preventDefault();
        return $.ajax({
          url: '/users/registrations/set_id',
          type: 'GET',
          data: {
            code: $('#user_id').val()
          },
          success: function(data, event, status, xhr) {
            $('#id_message').html(response);
            return $("#id_message").show();
          },
          error: function(event, data, status, xhr) {
            $('#id_message').html(response);
            return $("#id_message").show();
          }
        });
      });
    

    希望它能回答你的问题

    【讨论】:

    • 但是这里我使用了嵌套表单。ie 项目有很多任务。对于每个任务我应该分配用户。在分配用户期间我应该执行验证。对于这个验证我调用辅助方法
    • 这样您就可以将“selectValUser”中的数据作为字符串返回给控制器,并将其分配给某个实例变量并在视图中使用它
    【解决方案2】:

    没有办法直接做到这一点。原因是,html 在您的服务器端运行,而 javascript 在您的本地浏览器中运行。

    可以在这里找到更多讨论。

    How to pass a javascript variable into a erb code in a js view?

    关于不同的尝试方式,你可以从这个开始。

    http://jing.io/t/pass-javascript-variables-to-rails-controller.html

    http://www.ruby-forum.com/topic/3818171

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 2014-06-03
      • 2023-03-27
      相关资源
      最近更新 更多