我是新來的Rails。我正在構建我的第一個應用 - 簡單的博客。我有User和Post模型,每個用戶可以寫很多帖子。現在我想添加評論模式,其中每個帖子可以有很多評論,並且每個用戶都可以評論任何其他用戶創建的帖子。
在Comment模型我有添加評論到用戶和發表的模型(Ruby on Rails)
id \ body \ user_id \ post_id
列。
型號協會:
user.rb
has_many :posts, dependent: :destroy
has_many :comments
post.rb
has_many :comments, dependent: :destroy
belongs_to :user
comment.rb
belongs_to :user
belongs_to :post
SO 3 H我是否在CommentsController中正確定義了創建動作? 謝謝。
UPDATE:
的routes.rb
resources :posts do
resources :comments
end
comments_controller.rb
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create(comment_params)
if @comment.save
redirect_to @post
else
flash.now[:danger] = "error"
end
end
結果是
--- !ruby/hash:ActionController::Parameters
utf8: ✓
authenticity_token: rDjSn1FW3lSBlx9o/pf4yoxlg3s74SziayHdi3WAwMs=
comment: !ruby/hash:ActionController::Parameters
body: test
action: create
controller: comments
post_id: '57'
我們可以看到它不發送USER_ID和作品只有當我刪除e validates :user_id, presence: true
來自comment.rb的字符串
有什麼建議嗎?
首先,您並不需要直接將評論與用戶相關聯。您可以通過帖子間接將它們關聯到用戶。然後,評論是綁定到@post ...所以@ post.comments.create(comment_params)... –
@RubyRacer那麼,我該如何定義@post?我試過這樣的'@post = Post.find(params [:id])@comment = @ post.comments.create(comment_params)'但是出現錯誤「找不到沒有ID的帖子」 – Alexander
您應該閱讀有關路由和嵌套資源。做到這一點,玩遊戲(因爲你正在學習),當你不能自己做的時候回到這裏。 –