У меня есть пользовательское действие 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