【问题标题】:WARNING: Can't mass-assign protected attributes: Course警告:无法批量分配受保护的属性:课程
【发布时间】:2012-04-22 02:17:04
【问题描述】:

我正在使用 Rails,但我似乎无法克服这个错误。一个课程有很多笔记,一个笔记属于课程。

我得到的错误是:

无法批量分配受保护的属性:course

这是我的course.rb

class Course < ActiveRecord::Base
belongs_to :semester
has_many :notes, :dependent => :destroy

attr_accessible :course_name, :course_number, :instructor, :instructor_email, :class_meets, 
                :class_starts, :semester_id
end

note.rb

class Note < ActiveRecord::Base
belongs_to :course
attr_accessor :course_name, :course_id
attr_accessible :title, :date, :body, :extra, :course_name, :course_id 
end

notes/_form.html.erb(用户可以选择课程并创建笔记)

<%= f.select("course", Course.find(:all).collect {|c| [c.course_name, c.id]})%>

有没有办法解决这个错误?

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

你需要添加

attr_accessible :course

在你的Note.rb里面

【讨论】:

  • 现在我得到 Course() 预期,得到 String()
  • 你在哪里得到这个错误? (哪行代码和复制/粘贴代码)
  • 我在 notes_controller '@semester =Semester.new(params[:semester])'中得到错误
【解决方案2】:

由于您使用的是小于 rails 4 的 rails 版本,因此您必须明确传递您想要访问的参数。这是出于安全原因。但是,如果您使用 rails 4 默认情况下,rails 会为您处理这个问题。称为强参数。

所以你必须告诉你的模型让我的控制器和视图访问这个属性。

  attr_accessible :course

【讨论】:

    猜你喜欢
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多