【问题标题】:how to access javascript variable in rails view如何在rails视图中访问javascript变量
【发布时间】:2013-11-18 23:01:50
【问题描述】:

有什么方法可以访问rails 视图中的javasript 变量。 我只是设置了一些 javascript 变量的值,并希望在 rails 视图中访问它。

谢谢

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    您必须了解视图中的 ruby​​ 代码会在服务器上执行 - 在页面上的任何 javascript 执行更改之前。

    这就是为什么你不能做这样的事情:

    <script>
      var js_var = 1;
    </script>
    
    <%= get_value_of_js_var_somehow %>
    

    反之亦然:

    <script>
      var js_var = <% generate_value_with_ruby %>;
      do_something_in_javascript_with_js_var();
    </script>
    

    【讨论】:

    【解决方案2】:

    您可以使用 AJAX 将 javascript 变量传递给 rails。例如,如果您想从 javascript 将用户的 id 传递给 rails 控制器中的方法,您可以执行以下代码:

    <script>
      var id = 1;
      <%= remote_function :url => {:controller=>'controller_name', :action=>'method_name'}, :with => "'user_id=' + id" %>
    </script>
    

    您将通过 POST 请求接收变量作为参数。您可以使用params[:user_id] 访问它。

    def method_name
      if params[:user_id].exists?
        u = User.where('id = ?', params[:user_id]).first
      end
      puts u.path
    end
    

    希望我已经回答了你的问题。

    【讨论】:

      【解决方案3】:

      如果您在更高版本的 javascript(本身:application.js)中有这个 Javascript 变量,那么您总是可以在视图中引用它。

      #application.js
      var someVar = "Hello World";
      

      那么在您看来(在客户端执行),您可以...

      <script type='text/javascript'>
        alert(someVar);
      </script>
      

      如果这三篇文章中的一篇没有回答您的问题,我认为我们需要更具体的说明。

      【讨论】:

        【解决方案4】:

        假设我们有如下脚本

        <script type="text/javascript">
          var a="some value";
          document.getElementById('tagid').innerHTML='<%= tag(:div,content_tag(:p,' " +a+ " '), :id=>' " +a+ " ', name=>"somename") %>';
        </script>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-22
          • 1970-01-01
          相关资源
          最近更新 更多