2012-06-21 50 views
1

我有点nube,我试图搭载bokmann的rails3_fullcalendar在rails 3.2中创建一个日历应用程序,但是当我尝试在我的事件中创建一个事件时应用程序,我得到这个错误:Rails 3.2 POST与AJAX创建MassAssignmentSecurity ::错误

ActiveModel::MassAssignmentSecurity::Error in EventsController#create 

Can't mass-assign protected attributes: title, description, starts_at(1i), starts_at(2i), 
starts_at(3i), starts_at(4i), starts_at(5i), ends_at(1i), ends_at(2i), ends_at(3i), ends_at(4i), 
ends_at(5i), all_day 

{"utf8"=>"✓", 
"authenticity_token"=>"bq3ZUXLm4lYbja9FUafbroFF2Zwt8iMw6GWfvoRuPLA=", 
"event"=>{"title"=>"sddfsdf", 
"description"=>"df", 
"starts_at(1i)"=>"2012", 
"starts_at(2i)"=>"6", 
"commit"=>"Create Event"} 

的解决方案看起来像it should be this但通过与AJAX职位AUTH_TOKEN(它正在发送),但它仍然没有工作。

任何想法?

+0

也许@muribot知道? – ajbraus

回答

1

回答你的具体问题是下面的,但一个更好的答案是看该演示的新版本。既然你在看演示,我已经重新展示了如何与fullcalendar JavaScript和CSS作为一种资产宝石为此在Rails的3.2演示:

https://github.com/bokmann/fullcalendar_assets


最近有时(Rails的3.2 ?)防止质量分配的默认值已更改...您现在需要特别允许您想要允许质量分配的属性。

http://guides.rubyonrails.org/security.html#mass-assignment

在事件模型,添加一行,看起来像这样:

attr_accessible:标题,:说明:starts_at,:ends_at,:ALL_DAY

+0

它工作!现在由于某种原因,它生成了一个全新的日历,以将事件放入!我将重新修复您的新演示应用程序所带来的一切。谢谢! – ajbraus

0

fullcalendar应用程序似乎在config.active_record.whitelist_attributes = true成为rails默认设置之前创建。

在您的活动模型中,您是否有类似 attr_accessible :title, :description等的行?

1

如果你得到这个异常,你应该已经被认证,所以Auth_token不是你的问题。

Rails从版本3.2.3开始默认可以防止大规模分配。 您需要在模型中明确允许它们。这就是为什么来自第三方的旧代码会失败。更改模型:

class Event 
    .. 
    attr_accessible :title, :description, starts_at ... 
end 

但不包括像user_id到允许的属性列表中,这样可以防止有人谁是只能更改自己的活动,以重新连接它就会属于事件给另一个用户。

也Rails的指南见: Security Guide, Mass assignment

相关问题