사용자가 컴퓨터에서 CSV 파일을 선택한 다음 파일 폴더에 저장할 수있는 간단한 파일 업로드 양식이 있습니다. Carrierwave 사용자에게 애쓰며 내 앱은 Ruby on Rails에 내장되어 있습니다. 내가 파일을 저장하려고하면Carrierwave로 파일을 업로드하는 중에 경로가 일치하지 않습니다.
, 나는 여기에 다양한 구성 요소가 오류 "아니 경로 일치 [POST]"/ 고객/새 ".
를 얻을.
/new.html합니다. ERB
<%= form_for :dataload, :html => {:multipart => true} do |f| %>
<p>
<%= f.file_field :file %>
</p>
<p><%= f.submit %></p>
<% end %>
/models/dataload.rb
class Dataload < ActiveRecord::Base
attr_accessible :file_name, :request_user, :source
mount_uploader :file, CustomerWarrantyUploader
end
,
*/로더/customer_warranty_uploader.rb *
class CustomerWarrantyUploader < CarrierWave::Uploader::Base
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def extension_white_list
%w(csv)
end
* customers_controller.rb (새로운 방법; 나는 문제가 다양한 유사한 접근 방식을 시도하는 데 무엇 확실하지 않다 고객
resources :customers
에 대한 현재 경로를 여기 *)이에
def new
@customer = Customer.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @customer }
end
end
아무것도 완료하지 않았습니다. 모든 조언을 부탁드립니다.
좋습니다. 더 이상 오류가 없으며 고객이 성공적으로 생성되었다는 메시지가 나타납니다. 그러나 파일은 customer_warranty_uploader.rb에 지정된 위치에 저장되지 않습니다. 내가 누락 한 반송파는 무엇인가? – analyticsPierce
컨트롤러에서 아무 것도하지 않는 것처럼 보입니다. 당신은 다음과 같은 일을 할 필요가있을 것입니다 : @dataload = Dataload.create (params [: dataload]) –
또한 (그리고 저는 원래이 게시물에 거의 이것을 가지고 있지만 삭제했습니다.), 구현을 다소 재검토하고 싶을 수도 있습니다. 우려 사항을 명확히 구분할 수있는 것처럼 Dataload 객체를 위해 특별히 새로운 컨트롤러를 만드는 것이 더 바람직 할 수 있습니다. 고객 로직을 추가하지 않고도 유지 보수 및 문제 해결을보다 쉽게 수행 할 수 있습니다. 여기에는 페이지에 두 가지 형식 (최소한)이 있다고 가정합니다. –