Я получаю предупреждение "Невозможно массово назначить защищенные атрибуты"

Когда я пытаюсь отправить форму ниже, я получаю эту ошибку 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

rubyonrails api:: fields_for

Другие вопросы по тегам