1
我在控制器中使用名为add_roles的自定义操作以及具有名为role_name的虚拟属性的相关表单视图。我想验证的存在:ROLE_NAME,但它不工作:验证是否存在虚拟属性
这是控制器:
Class StaffsController < InheritedResources::Base
def roles
@staff=Staff.find params[:id]
end
def add_roles
@staff=Staff.find params[:id]
role_name=params[:staff][:role_name] #this field must be present
@staff.add_role Role.find(role_name).name
redirect_to staff_path(@staff)
end
end
这是模型:
class Staff < ActiveRecord::Base
attr_accessible :email, :name, :surname
attr_accessor :role_name
validates_presence_of :role_name
validate do |staff|
if staff.role_name.blank?
staff.errors[:base] << "INVALID"
end
end
end
这是视图:
<%= simple_form_for @staff, url: :add_roles_staff do |f| %>
<%= f.input :role_name, as: :select, collection: Role.global %>
<%= f.button :submit %>
<% end %>
正确的行为是,如果我不选择选择框:role_name表单显示我一个错误,但现在它不工作。该表单不显示任何错误。
为什么你有ROLE_NAME两个'attr_accessible'和'attr_accessor' ? – usha
是一个错误。现在我删除此条目 – user1066183