我有一个带有'帖子的嵌套资源'包含许多评论'和这些模型之间建立的关联。但是,当我为帖子创建评论时,< post_id'在注释表中保持为空并且没有建立链接。评论文本本身可以创建。
我使用的是Rails ver 4.2.1和postgresql数据库。
关联设置如下:
class Comment < ActiveRecord::Base
belongs_to :post
end
class Post < ActiveRecord::Base
has_many :comments, dependent: :destroy
end
这是路线设置:
资源:帖子做 资源:评论 端
我使用以下代码从评论/新视图创建评论:
= form_for [@post, @comment] do |f|
= f.label :comment
= f.text_field :comment
= f.submit "Add Comment"
我的评论控制器是这样的:
class CommentsController < ApplicationController
def new
@post = Post.find(params[:post_id])
@comment = Comment.new
end
def create
@post = Post.find(params[:post_id])
@comment = Comment.create(comment_params)
redirect_to posts_path
end
def comment_params
params.require(:comment).permit(:comment)
end
end
我有专栏&#39; post_id&#39;在评论表中设置,我的架构是这样的:
ActiveRecord::Schema.define(version: 20150404204033) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "comments", force: :cascade do |t|
t.string "comment"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "post_id"
end
add_index "comments", ["post_id"], name: "index_comments_on_post_id", using: :btree
create_table "posts", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_foreign_key "comments", "posts"
end
只是无法解决正在发生的事情,我在另一个项目中使用了几乎完全相同的代码并且有效。
任何帮助都会很棒。
答案 0 :(得分:1)
在此代码中:
def create
@post = Post.find(params[:post_id])
@comment = Comment.create(comment_params)
redirect_to posts_path
end
你发现这个帖子但从未对它做任何事情。评论不知道该帖子。您需要将评论的帖子设置为@post
。