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