我目前正在使用Rails 3.2和Active Scaffold进行一个项目。 我为我的一个模型创建了一个简单的控制器,该控制器按以下方式编码:
class StudentsController < ApplicationController
before_filter :authenticate_user!
active_scaffold :student do |conf|
conf.label = "Students"
conf.columns = [:last_name, :first_name, :age, :gender, :grade_level, :current_grade]
conf.create.columns = [:last_name, :first_name, :age, :gender, :grade_level]
conf.update.columns = [:last_name, :first_name, :age, :gender, :grade_level]
conf.columns[:current_grade].actions_for_association_links = [:show]
conf.columns[:current_grade].sort_by :sql => "grade_level"
conf.actions = [:list, :search, :create, :update, :show, :delete]
list.columns.exclude :customer_id, :grade_level
list.sorting = {:last_name => 'ASC'}
end
def conditions_for_collection
["customer_id = #{current_user.customer_id}"]
end
def before_create_save(record)
record.customer_id = current_user.customer_id
end
end
我的问题是:当我删除记录时,我收到一条消息,指出"无法删除$record_name"。 然而,如果我刷新页面,我发现该记录实际上已被删除。 在检查我的日志文件时,我看到一条错误消息,指出:
undefined method `as_marked=' for #<Student:0x0000000554c1d0>
我尝试将:mark添加到我的操作列表中,这确实解决了问题。 但是,我不希望标记/复选框列显示在我的列表中。
有什么想法吗? 这是我第一次使用主动脚手架,我发现这个......烦人。
我发现,如果我把它添加到我的模型中:
def as_marked= (x)
end
它可以工作,而不会在我的列表中显示标记/复选框列。
郑重声明,我讨厌这个解决方案:) 如果我想出更好的东西,我会确保回来更新这个答案。