railscast#238问题,date_select不使用rails 4。

时间:2013-09-10 17:54:45

标签: ruby-on-rails mongodb mongoid ruby-on-rails-4 railscasts

我正在尝试使用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)

有人可以为此提供解决方案吗?

2 个答案:

答案 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