Ruby on rails RoR:载体未工作/未保存到数据库

Ruby on rails RoR:载体未工作/未保存到数据库,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,carrierwave,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,Carrierwave,这是我通过观看Railscast,尝试让Carrierwave正常工作。我有一个项目后页面,用户在其中输入项目的详细信息。他们还可以将文件上载到此页面,并提交项目。因此,我在页面上使用嵌套的表单 新建步骤3.html.erb <%= nested_form_for @project, :html => {:multipart => true} do |f| %> <%= f.text_field :title %> <%= f.text_fiel

这是我通过观看Railscast,尝试让Carrierwave正常工作。我有一个项目后页面,用户在其中输入项目的详细信息。他们还可以将文件上载到此页面,并提交项目。因此,我在页面上使用嵌套的表单

新建步骤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 %>
document.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
attr_accessible :project_id, :title, :document

belongs_to :user
belongs_to :project
has_many :posts

mount_uploader :document, DocumentUploader
projects\u 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
结束

现在,当我尝试提交表单时,它会显示未知属性:document app/controllers/projects\u controller.rb:85:in'create'

在Rails控制台works Document.create中运行命令!(:document=>File.new(“test.jpg”)

我认为应该是

<%= f.fields_for :documents do |attachment_form| %>
  <%= attachment_form.file_field :title %>
<% end %>
而且它不知道该如何处理文档。 现在,您的嵌套文档将位于:documents=>{},使用
接受
的嵌套属性,它应该可以工作

您必须
在控制器中为该项目生成
文档:

@project.documents.build

您的底层数据库模式在“documents”表中是否有varchar“document”列?因为他说它在控制台中工作正常;)嘿,罗宾,谢谢你的回答。当我现在做的时候;“文件”字段没有显示在视图中。我认为这可能是因为您必须
构建
一个文件。因此,在控制器中,执行
@project.documents.build
@project.documents.build