2016-07-03 2 views
0

Я пытаюсь загрузить файл и разобрать его на рельсы. Я также хочу поместить содержимое файла в сортируемую таблицу. Я последовал за http://railscasts.com/episodes/396-importing-csv-and-excel?autoplay=true и прошел через него.Rails - Загрузка файла с помощью Javascript/HTML

Мой Посмотреть файл - index.html.erb выглядит следующим образом -

<%= form_tag import_users_path, multipart: true do %> 
Import a file 
<%= file_field_tag :file %> 
<%= submit_tag "Submit" %> 
<% end %> 

* _controllers.rb выглядит следующим образом

class UsersController < ApplicationController 
def index 
    @users = User.order(params[:sort]) 
end 

def show 
    @user = User.find(params[:id]) 
end 

def import 
    User.import(params[:file]) 
    redirect_to action: 'index' 
end 
end 

Теперь я хочу добавить стиль к кнопке загрузки файлов с помощью Javascript/Bootstrap. Я изменил index.html.erb к следующему -.

<%= form_tag import_users_path, multipart: true do %> 
<span class="fileUpload btn btn-primary"> Upload 
    <input id="uploadBtn" type="file" class="upload" /> 
</span> 
<%= submit_tag "Submit"> 
<% end %> 

и теперь активы/JavaScripts/* Js выглядит следующим образом -

document.getElementById("uploadBtn").onchange = function() { 
document.getElementById("uploadFile").value = this.value; 
}; 

Это не работает, потому что загруженный файл не является анализируется как ': file' не присваивается ничего.

Как я могу применить стили CSS и javascript к 'file_field_tag'?

ответ

1
  1. Вы должны иметь возможность добавлять CSS стиль для тега так же, как вы могли бы использовать для формы хелперов как таковой:

    file_field_tag :file, class: 'whatever-class'

  2. В то время как с помощью рукописного ввода файла, Я думаю, что вы не получаете значение в контроллере, потому что вы не имя вашего поля, исправление должно быть простым, как:

    <input id="uploadBtn" type="file" class="upload" name='file' />

  3. Я знаю, что вы можете загружать файл через AJAX/JS, но я не думаю, что этот процесс является прямым, так как я думаю, вам нужно будет сделать некоторые пользовательские формы, используя FormData и другие подобные вещи. Не совсем уверен, что я прав!

+0

Я пробовал, но он не работал. Он не выбрал мою таблицу стилей CSS. Это не делает никакой ошибки, когда я включаю свой файл css, но он просто не применяет стиль CSS, определенный внутри .css – Maria

Смежные вопросы