非常に単純なデータ入力フォームに、ユーザーがファイルをサーバーのファイル システムにアップロードして、そのファイルへの URL をデータベースのフィールドに配置できるようにするボタンを追加しようとしています。
ここまでで、_form...erb ファイルに file_field ヘルパーを追加できることがわかりました。
<%= form_for(@business) do |f| %>
<% if @business.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@business.errors.count, "error") %> prohibited this business from being saved:</h2>
<ul>
<% @business.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :deletedFlag %><br />
<%= f.check_box :deletedFlag %>
</div>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
...
<div class="field">
<%= f.label :logoURL %><br />
<%= f.text_field :logoURL %>
<%= f.file_field :imagefile %>
</div>
<div class="field">
<%= f.label :streetAddress %><br />
<%= f.text_area :streetAddress %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
これにより、「ファイルを選択」ボタンのあるフォームが表示されます。それをクリックすると、ファイルを選択できます。偉大な。
今、ルビーガイドから: http://guides.rubyonrails.org/form_helpers.html#uploading-files次のようなものを追加するように言われました:
def upload
uploaded_io = params[:business][:imagefile]
File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'w') do |file|
file.write(uploaded_io.read)
end
end
私のコントローラーに。
私が解決していないのは、その file_field がその「アップロード」アクションにどのように接続されるかです。ボタンを押してファイル名などを受け入れることはログで確認できますが、ファイルのアップロードが開始または試行されたことを示す兆候はありません。
私は多くの参考文献を読みましたが、それらはすべて、これら2つのものが必要であると言っているようですが、(私にとって)それらは点を結び付けていません. はい、私はRuby/Railsに非常に慣れていないので、明らかに基本的なものが欠けています。