これは、Railkeastを見てCarrierwaveを正しく動作させるための、ハッキングされた試みです。私はユーザーがプロジェクトの詳細を入力する投稿プロジェクトページを持っています。また、このページにファイルをアップロードしてプロジェクトを送信することもできます。だから私はページ上でnested_form_forを使用しています。RoR:Carrierwaveがデータベースに保存されていません
new_step_3.html.erb
<%= nested_form_for @project, :html => {:multipart => true} do |f| %>
<%= f.text_field :title %>
<%= f.text_field :description %>
<%= f.fields_for :document do |attachment_form| %>
<%= attachment_form.file_field :title %>
<% end %>
<%= f.text_field :skills %>
<%= f.submit 'Post Project' %>
<% end %>
project.rbモデル
attr_accessible :category, :title, :budget, :end_date, :description, :skills, :document, :days_lasting, :documents_attributes
belongs_to :user
has_many :posts
has_many :documents, :as => :attachable
validates_presence_of :category, :title, :description, :skills
accepts_nested_attributes_for :documents
document.rbモデル
attr_accessible :project_id, :title, :document
belongs_to :user
belongs_to :project
has_many :posts
mount_uploader :document, DocumentUploader
projects_controller.rb
def create
@project = current_user.projects.build(params[:project])
respond_to do |format|
if @project.save
format.html { redirect_to project_step_4_path(:start => @project.id), notice: 'Project was successfully created.' }
format.json { render json: @project, status: :created, location: @project }
else
format.html { render action: "new" }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
終わり今
、私はフォームを送信しようとすると、それは未知の属性を言うだろう: アプリ/コントローラ/ projects_controller.rbを文書化:85: `」Railsの中でコマンドを実行する
を作成するにはコンソールはDocument.createに動作します!(:ドキュメント=> File.new( "test.jpg"))私はそれがfields_forと
<%= f.fields_for :documents do |attachment_form| %>
<%= attachment_form.file_field :title %>
<% end %>
されるべきだと思う
は、あなたの基本的なDBスキーマを「文書」の表にVARCHAR「文書」欄がありますか? – clyfe
それは彼がそれがコンソールでうまく動作すると言って以来です;) – Robin