Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.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
Ruby on rails 控制器中的实例变量传递给引导文件输入插件_Ruby On Rails_Twitter Bootstrap_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 控制器中的实例变量传递给引导文件输入插件

Ruby on rails 控制器中的实例变量传递给引导文件输入插件,ruby-on-rails,twitter-bootstrap,ruby-on-rails-4,Ruby On Rails,Twitter Bootstrap,Ruby On Rails 4,我正在使用bootstrap3和一个特定的bootstrap插件,名为。我正在使用文件输入和回形针将餐厅的图片附加到我的餐厅模型上 我想做的一件事是让我的用户在编辑餐厅图像时能够看到旧的餐厅图像(存储在@restaurant.image.url)。阅读文档后,我发现我可以通过传入如下源代码将默认图像设置为文件输入: initialPreview: [ "<img src='/images/desert.jpg' class='file-preview-image' alt='Des

我正在使用bootstrap3和一个特定的bootstrap插件,名为。我正在使用文件输入和回形针将餐厅的图片附加到我的餐厅模型上

我想做的一件事是让我的用户在编辑餐厅图像时能够看到旧的餐厅图像(存储在
@restaurant.image.url
)。阅读文档后,我发现我可以通过传入如下源代码将默认图像设置为文件输入:

initialPreview: [
    "<img src='/images/desert.jpg' class='file-preview-image' alt='Desert' title='Desert'>",
    "<img src='/images/jellyfish.jpg' class='file-preview-image' alt='Jelly Fish' title='Jelly Fish'>",
],
但是
@restaurant
在我的javascript文件中是空的。有人知道为什么吗


我使用的是rails 4,我不知道这是否是区别。

首先,位于资产文件夹中的文件无法访问控制器中定义的实例变量。但是,您的控制器调用的视图不会。一个简单的解决方案(尽管rails纯粹主义者可能会斩首)是将javascript直接内联到您的表单中

在您的
\u form.html.erb

<script>
  $(document).ready(function(){
      img_source = "#{defined?(@restaurant) && @restaurant.image.exists? ? @restaurant.image.url : image_url('default_image.jpg')}"
      $("#image_upload").fileinput( initialPreview: ["<img src='"+img_source+"' class=\'file-preview-image\'>"]);
});
</script>

$(文档).ready(函数(){
img_source=“#{defined(?@restaurant)&&&&@restaurant.image.exists???@restaurant.image.url:image_url('default_image.jpg')”
$(“#图像上传”).fileinput(初始预览:[“”]);
});
注意:我添加了一个默认图像(因为您使用的是回形针);相应地修改


更复杂的解决方案可能涉及gems,例如可以帮助您将变量传递给javascript函数的gems。

如果我将javascript放在一个部分中,可以这样做吗?我必须把它放在“视图”文件夹中,还是放在“资产”文件夹中。
<script>
  $(document).ready(function(){
      img_source = "#{defined?(@restaurant) && @restaurant.image.exists? ? @restaurant.image.url : image_url('default_image.jpg')}"
      $("#image_upload").fileinput( initialPreview: ["<img src='"+img_source+"' class=\'file-preview-image\'>"]);
});
</script>