Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在js.erb文件的ruby代码中包含一个javascript变量_Javascript_Ruby On Rails - Fatal编程技术网

在js.erb文件的ruby代码中包含一个javascript变量

在js.erb文件的ruby代码中包含一个javascript变量,javascript,ruby-on-rails,Javascript,Ruby On Rails,我有一个选择输入,用户可以选择一个公司。每个公司都有一个图像url,我希望当用户单击选择选项时,该公司的图像会添加到选择输入旁边。这里我想让data.id返回它的值,这样就可以用正确的图像生成url 在我看来,我有 <img class="my_img" src=""> <%= select("company", "company_id", Company.all.collect {|p| [ p

我有一个选择输入,用户可以选择一个公司。每个公司都有一个图像url,我希望当用户单击选择选项时,该公司的图像会添加到选择输入旁边。这里我想让
data.id
返回它的值,这样就可以用正确的图像生成url

在我看来,我有

<img class="my_img" src="">

<%= select("company", "company_id", Company.all.collect {|p| [ p.name, p.id ] }, { id: "select-company"})%>

在我的js.erb文件中

$('#select-company').on('select2:select', function (e) { 
  var data = e.params.data;
  $(".my_img").attr("src", "<%= Company.find(#{data.id}).logo_url(:thumb) %>");
});
$('select company')。在('select2:select',函数(e){
var数据=e.params.data;
$(“.my_img”).attr(“src”,”);
});
通过传递要选择的块,可以自定义选项元素的生成,并将数据属性附加到元素

然后,您可以简单地读取事件处理程序中的数据属性:

$('#select-company').on('select2:select', function (e) { 
  var src = $(e.params.data.element).data('src');
  $(".my_img").attr("src", src);
});
所有这些都不需要使用
js.erb
模板

通过传递要选择的块,可以自定义选项元素的生成,并将数据属性附加到元素

然后,您可以简单地读取事件处理程序中的数据属性:

$('#select-company').on('select2:select', function (e) { 
  var src = $(e.params.data.element).data('src');
  $(".my_img").attr("src", src);
});

所有这些都不需要使用
js.erb
模板。

多亏了@max的答案,这里的解决方案包括一个选定的参数和一个类

select(“company”,“company_id”,company.all.collect{{p.name,p.id,{'data url path'=>p.logo_url(:thumb)}]},{selected:params[“company_id”]},{class:“select company”})
$('#company_company_id')。打开('select2:select',函数(e){
var数据=e.params.data;
var src=$(“#company_company_id select option[value=“”+data.id+”)。数据('url-path');
$(.my_img”).attr(“src”,src);
});

多亏了@max的回答,这里有一个包含选定参数和类的解决方案

select(“company”,“company_id”,company.all.collect{{p.name,p.id,{'data url path'=>p.logo_url(:thumb)}]},{selected:params[“company_id”]},{class:“select company”})
$('#company_company_id')。打开('select2:select',函数(e){
var数据=e.params.data;
var src=$(“#company_company_id select option[value=“”+data.id+”)。数据('url-path');
$(.my_img”).attr(“src”,src);
});

这个例子根本不起作用。ERB插值发生在服务器上,它实际上并不运行javascript。所以你会得到一个命名者。用这段代码你实际上想要完成什么?(请不要说“包含一个javascript变量”)。我正在尝试更改一个select的图像。您可以添加一个视图和用户故事的示例吗?听起来您应该使用数据属性将URL附加到视图中的元素。我已经在问题中添加了其他详细信息。这个示例根本不起作用。ERB插值发生在服务器上,它实际上并不运行javascript。所以你会得到一个命名者。用这段代码你实际上想要完成什么?(请不要说“包含一个javascript变量”)。我正在尝试更改一个select的图像。您可以添加一个视图和用户故事的示例吗?听起来您应该使用数据属性将URL附加到视图中的元素。我已经在问题中添加了其他详细信息。我从未实际使用过select2。我是基于JS的,我从来没有真正使用过select2所以YMMV。我把JS的基础去掉了