Ruby on rails 4 找不到文件字段";照片;当它显式存在于页面上时?Carrierwave Minimagick轨道4

Ruby on rails 4 找不到文件字段";照片;当它显式存在于页面上时?Carrierwave Minimagick轨道4,ruby-on-rails-4,carrierwave,minimagick,Ruby On Rails 4,Carrierwave,Minimagick,我使用Carrierwave和Minimagick将图像上传到用户的个人资料照片。我已经按照关于如何创建上传器并装载它的说明进行了操作。我正在用Rspec和水豚进行测试 这是我的用户配置文件\u spec.rb,相关行: feature 'Visitor views profile page' do before(:each) do @user = sign_in click_link "Profile" end scenario 'ca

我使用Carrierwave和Minimagick将图像上传到用户的个人资料照片。我已经按照关于如何创建上传器并装载它的说明进行了操作。我正在用Rspec和水豚进行测试

这是我的用户配置文件\u spec.rb,相关行:

feature 'Visitor views profile page' do
    before(:each) do
        @user = sign_in
        click_link "Profile"
    end

    scenario 'can upload a photo' do
        attach_file 'photo', File.join(Rails.root, 'public', 'images', 'default.png')
        click_button "Update Profile"
        expect(page).to have_content "default.png" 
    end
以下是用户配置文件编辑页面的my_form.html.erb:

<%= form_for @profile, url: @profile, :html => {:multipart => true} do |f| %>

    <strong>Photo:</strong>
      <%= image_tag @profile.photo.display if @profile.photo? %>
    </p>

    <div class="field">
      <%= f.label :photo %>
      <%= f.file_field :photo %>
    ....
<% end %>
结束 结束

无法解决错误。这是carrierwave的故障吗

这是我的photo_uploader.rb,不认为有必要,但以防万一,所有的信息

class PhotoUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick
  storage :file
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  def default_url
    ActionController::Base.helpers.asset_path("images/" + [version_name,     "default.png"].compact.join('_'))

    "/images/" + [version_name, "default.png"].compact.join('_')
  end

  version :display do
    process :resize_to_fill => [150, 150]
  end

  version :thumb do
    process :resize_to_fill => [50, 50]
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end

end
类PhotoUploader[150150] 结束 版本:thumb do 处理:将_调整为_填充=>[50,50] 结束 def扩展白名单 %w(jpg jpeg gif png) 结束 结束 编辑:添加了一些有关规范的新信息。

在当前规范中,正在查找与“照片”匹配的id、名称或标签,而您显然没有。以下任何一项都应该起作用:

attach_file 'profile[photo]', File.join(Rails.root, 'public', 'images', 'default.png') # name
attach_file 'profile_photo', File.join(Rails.root, 'public', 'images', 'default.png') # id
attach_file 'Photo', File.join(Rails.root, 'public', 'images', 'default.png') # label
class PhotoUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick
  storage :file
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  def default_url
    ActionController::Base.helpers.asset_path("images/" + [version_name,     "default.png"].compact.join('_'))

    "/images/" + [version_name, "default.png"].compact.join('_')
  end

  version :display do
    process :resize_to_fill => [150, 150]
  end

  version :thumb do
    process :resize_to_fill => [50, 50]
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end

end
attach_file 'profile[photo]', File.join(Rails.root, 'public', 'images', 'default.png') # name
attach_file 'profile_photo', File.join(Rails.root, 'public', 'images', 'default.png') # id
attach_file 'Photo', File.join(Rails.root, 'public', 'images', 'default.png') # label