【发布时间】:2016-08-26 07:00:07
【问题描述】:
我遇到了一种情况,我需要将一个 Javascript 变量传递给 rails 局部视图。
例如在 test.html.erb
<script type="text/javascript">
var array = <%= raw sort_section %>
for(i = 0; i < array.length; i++) {
$('#test').append("<%= j render :partial => 'section_in_panel', :locals => {:section => raw array[i]} %>");
}
</script>
但它总是抛出语法错误,我尝试了很多方法,比如
{:section => j sort_section_js[i]} %>"
{:section =>" + sort_section_js[i] + "}%>"
我需要使用它,因为我想调用ajax 来动态更改array。
更新
所以,也许我需要写一个控制器
def get_new_variable
...
return new_variable
end
然后在test.html.erb
<script>
$('test').onclick(function(event) {
//write some ajax call
//get new_variable
$('#test').empty();
$('#test').append("<%= j render :partial => 'section_in_panel', :locals => {:section => raw new_variable} %>");
});
)</script>
方向对吗?
【问题讨论】:
-
sort_section_js持有什么? -
它包含一个嵌套数组,抱歉我忘记更改变量名了。
-
在 ruby 将视图渲染到服务器后,Javascript 在客户端运行,那么您无法将 javascript 变量的值传递给 rails 部分视图。
-
我明白了,所以唯一的办法就是写一个新的控制器来获取新的变量,然后将新的变量传递给局部视图?