Ruby on rails Ruby on Rails和Carrierwave Gem:图像上传保存;“无”;到数据库
好吧,我已经试着诊断了好几天了,我正在拔头发。出于某种原因,无论我做什么,当我试图通过Carrierwave上传器上传图像时,它会在数据库中保存“nil”,而不是图像。如果这有什么意义的话,我也试过蜻蜓,我也有一些问题。任何信息都会有帮助,我只是真的需要修复这个。以下是相关文件: newexpense.html.erbRuby on rails Ruby on Rails和Carrierwave Gem:图像上传保存;“无”;到数据库,ruby-on-rails,ruby,paperclip,carrierwave,Ruby On Rails,Ruby,Paperclip,Carrierwave,好吧,我已经试着诊断了好几天了,我正在拔头发。出于某种原因,无论我做什么,当我试图通过Carrierwave上传器上传图像时,它会在数据库中保存“nil”,而不是图像。如果这有什么意义的话,我也试过蜻蜓,我也有一些问题。任何信息都会有帮助,我只是真的需要修复这个。以下是相关文件: newexpense.html.erb <%= form_for @new_expenses, html: { multipart: true } do |t| %> <fieldset>
<%= form_for @new_expenses, html: { multipart: true } do |t| %>
<fieldset>
<%= t.text_field :dateActivity, { :id => "expenseDate", :placeholder => "Date of Expense"} %>
<%= t.text_field :typeOfExpense, { :placeholder => "Type" } %>
<%= t.text_field :amount, { :id => "amountInput" , 'placeholder' => 'Amount $0.00', :step => 0.01 } %>
<%= t.text_field :payment, { :placeholder => "Payment Type" } %>
<%= t.text_field :notes, {:class => "form-control", :placeholder => "Description"} %>
</fieldset>
<div style="line-height:75%;"><br></div>
<fieldset>
<%= t.file_field :image %><br>
<%= button_tag "Submit", type: 'submit', id: "contact-submit" %>
</fieldset>
<% end %>
<% @expenses.each do |e| %>
<p>Type: <%= e.typeOfExpense %></p>
<p>Amount: $<%= e.amount %></p>
<p>Payment Type: <%= e.payment %></p>
<p>Description: <%= e.notes %></p>
<%= image_tag e.image %>
<% end %>
image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick
# include CarrierWave::MiniMagick
# Choose what kind of storage to use for this uploader:
storage :file
# storage :fog
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
# Add a white list of extensions which are allowed to be uploaded.
# For images you might use something like this:
def extension_whitelist
%w(jpg jpeg gif png)
end
end
我真的很难理解为什么我的图片不能保存。感谢大家在
用户中提供的任何帮助:D。rb
型号,您是否有具有多个:图像、依赖::销毁和接受嵌套的属性\u用于:图像
?这似乎是我看到的我的应用程序(成功使用CarrierWave)和你的应用程序之间的唯一区别…非常感谢,但不幸的是没有骰子。尽管出于好奇,你有没有“图像”作为模特?或者只是模型内部的一段数据?我以为您只使用了模型之间的许多关系。是的,我有一个名为ListingImage
的模型,其中包含mount\u uploader:image,ImageUploader
语句,您在模型中有该语句。因此,我想在你的例子中,你需要在用户和费用之间为
拥有许多
和接受
的嵌套属性。在你的user.rb
模型中,你是否有拥有_许多:图像,依赖::销毁
和接受
为:图像的嵌套属性?这似乎是我看到的我的应用程序(成功使用CarrierWave)和你的应用程序之间的唯一区别…非常感谢,但不幸的是没有骰子。尽管出于好奇,你有没有“图像”作为模特?或者只是模型内部的一段数据?我以为您只使用了模型之间的许多关系。是的,我有一个名为ListingImage
的模型,其中包含mount\u uploader:image,ImageUploader
语句,您在模型中有该语句。所以我想在你的例子中,你需要在用户和费用之间有很多并且接受的嵌套属性。
def create
@new_expenses = Expense.new(params_final_expense)
if @new_expenses.save
flash[:success] = "Expense entry created!"
redirect_to expenses_url
else
flash[:success] = "Expense entry failed :("
redirect_to expenses_url
end
end
private
def params_final_expense
new_pages_params_expense.merge(:user => current_user)
end
def new_pages_params_expense
params.require(:expense).permit(:dateActivity, :typeOfExpense, :amount, :payment, :notes, :image)
end
class ImageUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick
# include CarrierWave::MiniMagick
# Choose what kind of storage to use for this uploader:
storage :file
# storage :fog
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
# Add a white list of extensions which are allowed to be uploaded.
# For images you might use something like this:
def extension_whitelist
%w(jpg jpeg gif png)
end
end
Processing by PagesController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"HUHjhuisdfjwieuhIUHOUHusdf", "expense"=>{"dateActivity"=>"2016-12-19", "typeOfExpense"=>"", "amount"=>"", "payment"=>"", "notes"=>"", "image"=>"043.png"}, "button"=>""}
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = 5 ORDER BY "users"."id" ASC LIMIT 1
(1.0ms) begin transaction
SQL (1.0ms) INSERT INTO "expenses" ("created_at", "dateActivity", "image", "notes", "payment", "typeOfExpense", "updated_at", "user_id") VALUES (?, ?, ?, ?, ?, ?, ?, ?) [["created_at", "2016-12-19 19:56:40.537849"], ["dateActivity", "2016-12-19"], ["image", nil], ["notes", ""], ["payment", ""], ["typeOfExpense", ""], ["updated_at", "2016-12-19 19:56:40.537849"], ["user_id", 5]]