好吧所以我调用了一个调用html.erb部分的js.erb partial ..但是,我需要将一个变量从jquery partial传递给html.erb partial ...
基本上:
$(document).ready(function(){
$('#aidmodel_brand').change(function() {
$("select option:selected").each(function () {
var brand = ($(this).text());
$('#modeler').html('<%= escape_javascript(render(:partial => "shared/model", :brand => @brand)) %>');
});
});
});
我希望以某种方式将var品牌分配给实例变量@brand,以便我可以将选定的选项从下拉菜单传递到rails partial以生成下一个下拉菜单。
谢谢!
答案 0 :(得分:0)
为什么这不能按照你想要的方式完成的原因是js.erb中的Javascript在(客户端)执行,执行ruby后执行(在服务器上)
所以这个 -
<%= escape_javascript(render(:partial => "shared/model", :brand => @brand)) %>
在服务器上执行,生成的js传递给客户端,很久以后,执行以下javascript。
function() {
$("select option:selected").each(function () {
var brand = ($(this).text());
...
现在要实现这个要求,你可以渲染ruby代码中的所有brand
部分,然后让js做出选择。像 -
$('#modeler').html(<%= escape_javascript(Brand.all.each{|b| render(:partial => "shared/model", :brand => b)}.join('')) %>)
$(document).ready(function(){
$('#aidmodel_brand').change(function() {
$("select option:selected").each(function () {
var brand = ($(this).text());
var brand_finder = "." + brand
var brand_block = $('#modeler').find(brand_finder)
brand_block.show()
});
});
});
在“共享/模型”中,您可以为品牌块提供一个css类名,该名称与选项中的文本相同: