Ruby on rails 回形针未保存,无错误

Ruby on rails 回形针未保存,无错误,ruby-on-rails,ruby,paperclip,Ruby On Rails,Ruby,Paperclip,我绊倒了-浏览了文档、教程等,不确定我做错了什么 项目中的另一个模型是为回形针设置的,在测试时可以正常工作。它将附件文件信息保存并检索到数据库中,并将文件放入public/system中的子文件夹中。我基本上是将相关代码复制到我正在开发的模型中 该模型具有以下行: has_attached_file :document 模型链接到的表具有必要的列: document_file_name document_content_type document_file_size document_upd

我绊倒了-浏览了文档、教程等,不确定我做错了什么

项目中的另一个模型是为回形针设置的,在测试时可以正常工作。它将附件文件信息保存并检索到数据库中,并将文件放入public/system中的子文件夹中。我基本上是将相关代码复制到我正在开发的模型中

该模型具有以下行:

has_attached_file :document
模型链接到的表具有必要的列:

document_file_name 
document_content_type
document_file_size
document_updated_at
编辑视图具有以下内容(在haml中):

%h1知识库:编辑文章
=消息块:on=>@article
-表单(@article,:url=>knowledge\u base\u article_path(@article),:html=>{:multipart=>true})do | f|
#knowledgebase.clearfix
%标签上载KB文档:
%溴
=f.file\u字段:文档
-如果@article.document.存在?
%p
=链接到“当前KB附件”,@article.document.url
%p
=f.复选框:删除文档

=render:partial=>“form”,:locals=>{:f=>f} =提交标签“保存更改” =链接到“取消”,知识库文章路径(@article)
当我保存模型实例时,我可以在日志中看到Rails知道我试图上载的文件:

Processing KnowledgeBase::ArticlesController#update (for 127.0.0.1 at 2010-11-18 19:21:01) [PUT]
  Parameters: {"article"=>{"document"=>#<File:/var/folders/EZ/EZKwznNSGq4PAI4ll9NUD++++TI/-Tmp-/RackMultipart20101118-58632-19nvbc8-0>, "question"=>"Craig's Sandbox", "active"=>"0", "answer"=>"Nothing here, this is to test attachment functionality"}, "commit"=>"Save changes", "action"=>"update", "_method"=>"put", "authenticity_token"=>"MfH6RgLAQLnRBuf9WxgqWA+mIrDoBtYF+d4MW5DNCC0=", "id"=>"886", "controller"=>"knowledge_base/articles"}
Processing KnowledgeBase::ArticlesController#更新(适用于2010-11-18 19:21:01的127.0.0.1)[PUT]
参数:{“article”=>{“document”=>#,“question”=>“Craig's Sandbox”,“active”=>“0”,“response”=>“这里什么都没有,这是为了测试附件功能”},“commit”=>“Save changes”,“action”=>“update”,“u method”=>“put”,“authenticity\u token”=>“MFH6RGLAQLNRBUF9WXQWA+mIrDoBtYF+d4MW5DNCC0=”,“id”=>“886”,“controller”=>“知识库/文章”}
但是,对于四列
document.
*而言,db值根本没有更新,它们仍然为空。同一个表中的其他列会很好地更新

为了确保db列的命名正确,我将db列更改为其他内容,并在点击视图时出错,因此我知道db列的命名正确

为了测试附件检索,我在public/system中手动创建了子文件夹(保存模型实例时附件会放在那里),还手动修改了表中的四列
document
*。然后我转到上面的同一个视图,它确实显示了正确的附件

我注意到,当选中“删除文档”时,我也无法删除附件。
文档的db值保持不变

这就好像这4列上的读操作起作用,但写操作不起作用(尽管如果我在“编辑视图”页面上修改模型实例中的某些内容,我可以让Rails修改同一表中的其他列)


你知道我可能做错了什么吗?我确信我错过了一些明显的东西。

您如何更新控制器中的
文章
模型?您是否正在使用
@article.update_属性(params[:article])

原因如果是,则可能是由于不正确使用
attr\u protected
attr\u accessible
造成的。在这种情况下,您可以尝试使用

@article.document = params[:article][:document]

非常感谢。罪魁祸首确实在控制器内,现已修复。我用params[:某个\u namespace\u在\u article之前]代替了params[:article],现在已经解决了!标记为已解决。
@article.document = params[:article][:document]