Я пытался создать блог, и у меня есть 3 модели post
, user
, comment
. Когда я создал comment
, comment.post_id
равно nil
. Что я делаю не так?
< Сильный > comments_controller
def new
@comment = Comment.new
end
def edit
@post = Post.find(params[:post_id])
end
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create(comment_params)
@comment.user_id = current_user
redirect_to post_path(@post)
end
редактировать
< Сильный > post.rb
has_many :comments, dependent: :destroy
belongs_to :user
< Сильный > comment.rb
belongs_to :user
belongs_to :post
< Сильный > user.rb
has_many :posts, dependent: :destroy
has_many :comments, dependent: :destroy
0
vveare138
23 Фев 2015 в 19:57
2 ответа
Лучший ответ
Вот решение:
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.new(params[:comment])
@comment.user_id = current_user.id
@comment.save
redirect_to post_path(@post)
end
Источник: Ответ в stackoverflow
Итак, используйте следующую ассоциацию, как в источнике выше.
0
Community
23 Май 2017 в 11:58
Надеюсь, это сработает.
def create
@post = Post.find(params[:post_id])
@comment = Comment.new(comment_params.merge(user_id: current_user.id))
@post.comments << @comment
redirect_to post_path(@post)
end
0
DevMarwen
23 Фев 2015 в 17:15
Похожие вопросы
Связанные вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.