抱歉也许是新手问题。 我想使用paperclip和paperclip_database gems来附加和保存我的数据库中的文件。 但我坚持将视图中的文件数据发送到控制器。 我已经从this和this资源中完成了所有操作。结果我有下一个模型:
class User < ActiveRecord::Base
has_many :certificates, :dependent => :destroy
accepts_nested_attributes_for :certificates, :allow_destroy => true
end
class Certificate < ActiveRecord::Base
belongs_to :user
attr_accessor :image
has_attached_file :image,
:storage => :database,
:database_table => 'image_files',
:cascade_deletion => true
end
在控制器中
Users_controller
def new
@user = User.new
@user.certificates.build
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
end
def create
@user = User.new(params[:user])
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
end
end
我的观点表是:
<%= form_tag @user, method: :put, :html => { :multipart => true } do |f|%>
<%= fields_for each_event_entry.certificates.first do |c| %>
<tr>
<th>Certificate</th>
<td>
<%= c.file_field :image %>
</td>
</tr>
<% end %>
<% end %>
但是当我附上一个文件并尝试提交时,我只能在params中找到一个文件名:
{
"user" => {"some"=>"params"}
"certificate"=>{"image"=>"IMG_1642.JPG"}
}
并且无需附加文件即可保存证书。 任何帮助将非常感激。
答案 0 :(得分:0)
最后,我发现了问题。
“ form_tag”表单似乎不需要:html属性,因此html表单应如下所示:
<%= form_tag @user, :multipart => true do |f| %>
就我而言,也不需要方法:
希望这会对某人有所帮助。