Ruby on rails 自定义ruby on rails上的文件\字段按钮

Ruby on rails 自定义ruby on rails上的文件\字段按钮,ruby-on-rails,ruby,twitter-bootstrap-3,Ruby On Rails,Ruby,Twitter Bootstrap 3,我试图摆脱丑陋的按钮轨道作为默认的文件上传。我想添加一个字形图标 <%= f.file_field :image_url, class:"glyphicon glyphicon-camera" %> 这不起作用,我在本页上看到的不同帖子中尝试了其他方法,但它们没有附加文件。正如这里所建议的,您可以使用Bootstrap的文件样式来设置文件上载按钮的样式 步骤1:将其添加到布局application.html.erb 我已经从CDN中添加了引导文件样式库。您应该确保同时加载了

我试图摆脱丑陋的按钮轨道作为默认的文件上传。我想添加一个字形图标

  <%= f.file_field :image_url, class:"glyphicon glyphicon-camera" %>

这不起作用,我在本页上看到的不同帖子中尝试了其他方法,但它们没有附加文件。

正如这里所建议的,您可以使用Bootstrap的文件样式来设置文件上载按钮的样式

步骤1:将其添加到布局
application.html.erb

我已经从CDN中添加了引导文件样式库。您应该确保同时加载了JQuery和Boostrap

步骤3:然后您的
图像\u url
文件字段可能如下所示:

<%= f.file_field :image_url,class: "filestyle", "data-input" => false %>
false%>
您还可以使用:-

   add file field and hide this field :-
     <%= f.file_field :image_url ,:onchange=>"loadFile(event)",id: "upload-it", class: "hide_input"%>

add one div with class:"glyphicon glyphicon-camera" :-
 <div class="glyphicon glyphicon-camera" id="image-output",:onclick="upload_it(event)"></div>

use script:-
<script>
  var loadFile = function(event) {
    var output = document.getElementById('image-output');
    output.src = URL.createObjectURL(event.target.files[0]);
  };
  function upload_it(){
    $("#upload-it").click();
  };
</script>
添加文件字段并隐藏此字段:-
“加载文件(事件)”,id:“上载”,类:“隐藏输入”%>
添加一个具有类“glyphicon glyphicon camera”的div:-
使用脚本:-
var loadFile=函数(事件){
var output=document.getElementById('image-output');
output.src=URL.createObjectURL(event.target.files[0]);
};
函数upload_it(){
$(“#上传”)。单击();
};

您可以使用css来完成

HTML:

<div class="image-upload">
   <label for="file-input">
     <span class="glyphicon glyphicon-camera"></span>
   </label>

   <%= f.file_field :image_url, id:"file-input" %>
</div>
.image-upload > input
{
   display: none;
}
.image-upload > label{
  cursor:pointer;
}

你可以找到工作示例

检查这个,我以前看到过这个答案,但我的:image\u url到底在哪里,我尝试将它放在不同的位置,但图片没有上传@pavant这将所有内容替换为图标(好)坏没有ui反馈(坏),因此用户看不到已附加用于上传的文件。在我看来,这是一个有效的解决方案,它应该包括一种自动触发上传的方法(因此不需要额外的反馈)或显示哪个文件已经准备好上传只要发现在更改时添加
:“this.form.submit()”
文件\u字段
将在选择时自动上传。@estani the(坏)答案中没有包含一些JS,因为OP没有要求它的安全性,我只是认为最好事先知道这种解决方案的局限性。OP确实想要一些有效的东西,所以他/她需要找到一个解决方案,所以我认为最好说出来。我的2c。没问题,我只是澄清了我的立场,我不介意建议。干杯
<div class="image-upload">
   <label for="file-input">
     <span class="glyphicon glyphicon-camera"></span>
   </label>

   <%= f.file_field :image_url, id:"file-input" %>
</div>
.image-upload > input
{
   display: none;
}
.image-upload > label{
  cursor:pointer;
}