我正在尝试使用railscast#238。 我正在使用rails 4和mongoid(4.0.0)。当尝试使用date_select帮助器添加published_on字段时。它无法保存到收藏中。 然后,我在permit函数中添加了:published_on。但后来我也收到了错误。 我也试过包括Mongoid :: MultiParameterAttributes但是找不到它。我认为它已从mongoid中删除。 以下是日志文件中的错误:
ArticlesController处理#update为HTML 参数:{“utf8”=>“✓”,“authenticity_token”=>“3 + y5UUckEDqJRPwdibdlhwAxKHi1g2ECF / 4SzFNVbJE =”,“article”=> {“name”=>“sachin”,“published_on(1i) “=>”2013“,”published_on(2i)“=>”4“,”published_on(3i)“=>”10“,”content“=>”s'up?“},”提交“=>”更新文章“,”id“=>”522f4ce6f0b1817131000001“} MOPED:127.0.0.1:27017 QUERY database = mongs_development collection = articles selector = {“_ id”=>“522f4ce6f0b1817131000001”} flags = [:slave_ok] limit = 0 skip = 0 batch_size = nil fields = nil(0.5178ms) 在3毫秒内完成500内部服务器错误
Mongoid :: Errors :: UnknownAttribute( 问题: 尝试为模型文章中不允许的'published_on(1i)'设置值。 摘要: 在模型中不包含Mongoid :: Attributes :: Dynamic且属性哈希中不存在该属性,因此不允许尝试调用Article#published_on(1i)=。这也是通过将属性传递给任何接受属性哈希的方法来触发的,并且被引发而不是获取NoMethodError。 解析度: 如果您希望经常为未定义的字段写入值,则可以包含Mongoid :: Attributes :: Dynamic。): app / controllers / articles_controller.rb:44:
block in update' app/controllers/articles_controller.rb:43:in
更新'
如果我从permit中删除published_on:
参数:{“utf8”=>“✓”,“authenticity_token”=>“3 + y5UUckEDqJRPwdibdlhwAxKHi1g2ECF / 4SzFNVbJE =”,“article”=> {“name”=>“sachin”,“published_on (1i)“=>”2013“,”published_on(2i)“=>”9“,”published_on(3i)“=>”10“,”content“=>”s'up?“} ,“commit”=>“更新文章”,“id”=>“522f4ce6f0b1817131000001”} MOPED:127.0.0.1:27017 COMMAND database = admin command = {:ismaster => 1}(0.6187ms) MOPED:127.0.0.1:27017 QUERY database = mongs_development collection = articles selector = {“_ id”=>“522f4ce6f0b1817131000001”} flags = [:slave_ok] limit = 0 skip = 0 batch_size = nil fields = nil(0.2012ms) 未允许的参数:published_on(1i),published_on(2i),published_on(3i) 重定向到
http://localhost:3000/articles/522f4ce6f0b1817131000001
完成302发现在5ms
开始获取“/ articles / 522f4ce6f0b1817131000001”for 127.0.0.1 at 2013-09-10 23:19:34 +0530 由ArticlesController处理#显示为HTML 参数:{“id”=>“522f4ce6f0b1817131000001”} MOPED:127.0.0.1:27017 QUERY database = mongs_development collection = articles selector = {“_ id”=>“522f4ce6f0b1817131000001”} flags = [:slave_ok] limit = 0 skip = 0 batch_size = nil fields = nil(0.3569ms) 在布局/应用程序中呈现文章/ show.html.erb(0.6ms) 在9ms完成200 OK(浏览次数:7.4ms)
有人可以为此提供解决方案吗?
答案 0 :(得分:2)
您需要在文档类中包含Mongoid::MultiParameterAttributes
。
在Mongoid 4.0中,您还需要在yor lib/
文件夹中定义该模块。
请参阅this blog
答案 1 :(得分:0)
我敢打赌你有这个功能
def article_params params.require(:文章).permit!(:published_on) 端
但你还需要......
Article.create(article_params)
不会强>
Article.create(params[:article])
希望这有帮助,
-Brian