【发布时间】:2013-11-18 23:01:50
【问题描述】:
有什么方法可以访问rails 视图中的javasript 变量。 我只是设置了一些 javascript 变量的值,并希望在 rails 视图中访问它。
谢谢
【问题讨论】:
标签: ruby-on-rails
有什么方法可以访问rails 视图中的javasript 变量。 我只是设置了一些 javascript 变量的值,并希望在 rails 视图中访问它。
谢谢
【问题讨论】:
标签: ruby-on-rails
您必须了解视图中的 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>
【讨论】:
您可以使用 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
希望我已经回答了你的问题。
【讨论】:
如果您在更高版本的 javascript(本身:application.js)中有这个 Javascript 变量,那么您总是可以在视图中引用它。
#application.js
var someVar = "Hello World";
那么在您看来(在客户端执行),您可以...
<script type='text/javascript'>
alert(someVar);
</script>
如果这三篇文章中的一篇没有回答您的问题,我认为我们需要更具体的说明。
【讨论】:
假设我们有如下脚本
<script type="text/javascript">
var a="some value";
document.getElementById('tagid').innerHTML='<%= tag(:div,content_tag(:p,' " +a+ " '), :id=>' " +a+ " ', name=>"somename") %>';
</script>
【讨论】: