我有一个情况,有一个Javascript变量我需要传递给rails部分视图。
例如,在 test.html.erb
中{:section => j sort_section_js[i]} %>"
{:section =>" + sort_section_js[i] + "}%>"
但是它一直在抛出语法错误,我尝试了很多方法,比如
ajax
我需要使用它,因为我想调用array
动态更改def get_new_variable
...
return new_variable
end
。
所以,也许我需要编写一个控制器
<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>
然后在 test.html.erb
中flex: 1
这是正确的方向吗?
答案 0 :(得分:1)
正如Alberto Juan在评论中写道,你不能在ruby代码中使用javascript变量。 Ruby代码将在javascript之前解释,并且不知道i是什么。
更新:您的更新无法使用您在javascript代码中使用的new_variable。
要在ajax调用后使用partial,请按照 link
中的说明操作<强>项/ index.html.erb 强>
<div class="grid">
<% @categories.each do |cat| %>
<%= link_to cat.name, fetch_items_path(:cat_id => cat.id), :remote => true %>
<% end %>
<%= render partial: 'item_grid', locals: { items: @items} %>
</div>
<强>的routes.rb 强>
get "/fetch_items" => 'items#from_category', as: 'fetch_items'
<强> items_controller.rb 强>
def index
@items = Item.all
@categories = Category.all
end
def from_category
@selected = Item.where(:category_id => params[:cat_id])
respond_to do |format|
format.js
end
end
<强>视图/项目/ from_category.js.erb 强>
$("#items_grid").html("<%= escape_javascript(render partial: 'items_list', locals: { items: @selected } ) %>");
答案 1 :(得分:0)
您可以使用gem gon
或只是执行以下操作:
<script>
MyVars[:someVar] = <%= some_value %>;
</script>
但是,我建议你将后端与前端代码分开并使用JSON将数据传递给JS。