2017-02-02 32 views
0

В моей модели у меня естьRails вложенного атрибута не сохранение

class Blog < ActiveRecord::Base 
    has_many :tags, :dependent => :destroy 
    accepts_nested_attributes_for :tags, :allow_destroy => true 
end 

class Tag < ActiveRecord::Base 
    belongs_to :blog 

    validates :blog, :name, presence: true 
end 

Блог контроллер

def new 
    @blog = Blog.new 
    @blog.tags.build 
end 

_form.html.erb

Блог контроллер

def create 
    @blog = Blog.new(blog_params) 
    binding.pry 
end 

def blog_params 
     params.require(:blog).permit(:title, :author, :text, :avatar, :banner, :tags_attributes => [:id, :name]) 
    end 

В моей привязке он говорит, что сообщение об ошибке @ blog заключается в том, что оно не может быть сохранено, потому что в теге отсутствует файл blog_id. Я повсюду смотрел, и я попытался воспроизвести свой код, чтобы соответствовать другим решениям, но без успеха.

Если это помогает, в моих Params, когда я представить форму я получаю это

"tags_attributes"=>{"0"=>{"name"=>"dsfsf"}} 
+0

Попробуйте изменить 'f.fields_for: tags' на' f.fields_for: tags_attributes'? @Edmund Lee в противном случае правильно, вы должны использовать 'create' вместо' new' здесь, чтобы сохранить объект в db. – Glyoko

+0

nope это не сработало. У меня только есть blog.new, потому что у меня есть блог. Сохраняйте мой код, который я не включил в мой вопрос – brandoncodes

+0

@brandoncodes @Glyoko, это потому, что он проверяет наличие: id в 'Tag' –

ответ

1

это потому, что ваш @blog не сохраняется в БД еще, так что вы не будете иметь id.

В вашей модели Tag, удалите :id из проверки.

Вы должны быть в состоянии просто сделать Blog.create(blog_params)

Rails должен обрабатывать все остальное за вас.

+0

Я пробовал это , и я до сих пор получил ту же ошибку. – brandoncodes

+0

@brandoncodes извините за мой недосмотр. см. мое редактирование. В вашей модели Tag удалите: id из проверки. –

+0

np на всех! Да, я собирался опубликовать это. Это то, что я только что сделал, и это сработало. Благодаря! – brandoncodes

Смежные вопросы