Ruby on rails Ruby on Rails和Carrierwave Gem:图像上传保存;“无”;到数据库

Ruby 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>

好吧,我已经试着诊断了好几天了,我正在拔头发。出于某种原因,无论我做什么,当我试图通过Carrierwave上传器上传图像时,它会在数据库中保存“nil”,而不是图像。如果这有什么意义的话,我也试过蜻蜓,我也有一些问题。任何信息都会有帮助,我只是真的需要修复这个。以下是相关文件:

newexpense.html.erb

<%= 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]]