Я получаю предупреждение "Невозможно массово назначить защищенные атрибуты"
Когда я пытаюсь отправить форму ниже, я получаю эту ошибку WARNING: Can't mass-assign protected attributes: sub_category
.Я пытался просмотреть предыдущие заданные связанные вопросы здесь на stackru и кажется, что я на правильном пути, но по какой-то причине я все еще получаю ту же ошибку, что я делаю неправильно?. Я включил всю информацию ниже, заранее спасибо.
Вид / форма
<%= form_for @ip ,:url=>{:action =>"create"} do |f| %>
<%=f.text_field :email %>
<% f.text_field :ip_address %>
<%= f.fields_for :sub_category do |s| %>
<%=s.text_field :name%>
<%end%>
<%=f.submit "submit" %>
<%end%>
контроллер
def create
@ips=Ip.new(params[:ip])
@ip=@ips.sub_categories.build
if @ip.save
redirect_to :controller=>"home" ,:action=>"index"
else
render 'index'
end
модели
class Ip < ActiveRecord::Base
has_many :sub_categories ,:through=>:ip_subs
has_many :ip_subs
accepts_nested_attributes_for :sub_categories
attr_accessible :sub_categories_attributes,:ip_address,:email,:ip_count
end
class SubCategory < ActiveRecord::Base
has_many :ip ,:through=>:ip_subs
has_many :ip_subs
end
class IpSub < ActiveRecord::Base
belongs_to :ip
belongs_to :sub_category
end
1 ответ
Решение
Вы должны использовать f.fields_for :sub_categories
(название ассоциации).
И не забудьте создать ассоциацию, прежде чем визуализировать форму:
# in controller
def new
@ip = Ip.new
@ip.sub_categories.build
end