Rails file_field не возвращает исходное_файл - PullRequest
1 голос
/ 26 января 2010

У меня есть форма ниже:

<% form_for(@filedata, :url=>{ :controller=>"filedatas", :action=>"create"}, :multipart => true) do |f| %>

  <label>Select File</label> : <%#= f.file_field :file %>
<%= file_field_tag 'uploadedFile' %>
  <%= f.submit 'Upload' %>
</p>

<% end %>

Я прокомментировал поле f.file_field, но я протестировал оба, и оба дают мне одну и ту же проблему Они просто возвращают имя файла, и я получаю строку. такие методы, как .path и .original_filename вызывают ошибку.

В моем списке параметров я получаю: "UploadedFile" => "тест"

(имя моего файла test.txt)

У кого-нибудь есть предложения?

Ответы [ 2 ]

4 голосов
/ 26 января 2010

Извините, возможно, я неправильно понял ваш исходный вопрос. Похоже, у вас есть ошибка в вашем вызове form_for. Должно быть:

<% form_for(@filedata, :url=>{ :controller=>"filedatas", :action=>"create"}, :html => {:multipart => true}) do |f| %>

Вам не хватало части ": html => {}". Кроме того, вы можете сократить его так:

<%= form_for @filedata, :html => {:multipart => true} do |f| %>
0 голосов
/ 26 января 2010

Это происходит потому, что содержимое файла не хранится в атрибуте, как другие поля. Содержимое файла хранится в данных POST и должно быть получено. Требуются дополнительные шаги.

Эта статья объясняет один из способов сделать это вручную. Но лучший подход - использовать плагин, такой как мыслительная скрепка , чтобы справиться с этим за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...