Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Can';t在PostRails中创建评论表单_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Can';t在PostRails中创建评论表单

Ruby on rails Can';t在PostRails中创建评论表单,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我试图在rails中的文章下创建一个评论框/表单,但它不断引发一个错误,称为unknown attribute:post_id 我的表格代码 <%= form_for ([@post, @post.comments.build]) do |f| %> <p> <%= f.label :commenter %> <br> <%= f.text_field :commenter %> </p> <p> <%=

我试图在rails中的文章下创建一个评论框/表单,但它不断引发一个错误,称为unknown attribute:post_id

我的表格代码

<%= form_for ([@post, @post.comments.build]) do |f| %>
<p>
<%= f.label :commenter %> <br>
<%= f.text_field :commenter %>
</p>
<p>
<%= f.label :body %> <br>
<%= f.text_area :body %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
这会引起一个错误

<%= form_for ([@post, @post.comments.build]) do |f| %>

说出未知属性:post_id

谢谢大家

更新错误:未定义的方法“posts”

<tr>
       <td><%= comment.commenter %></td>
       <td><%= comment.body %></td>
       <td><%= comment.posts %></td>
       <td><%= link_to 'Show', comment %></td>
       <td><%= link_to 'Edit', edit_comment_path(comment) %></td>
       <td><%= link_to 'Destroy', comment, method: :delete, data: { confirm: 'Are you sure?' } %></td>

comments
表中似乎没有导致错误的
post\u id

查看您的代码,我猜您希望在
Post
Comment
模型之间建立1-M关系

确保模型中的关系设置正确,如下所示:

class Post < ActiveRecord::Base
  has_many :comments
  ## ...
end

class Comment < ActiveRecord::Base
  belongs_to :post
  ## ...
end
在此运行之后
rake db:migrate

更新

我得到了未定义的方法“post\u comments\u path”

为了解决上述问题,您应该在
routes.rb中嵌套路由

resources :posts do
  resources :comments
end
更新2

改变

<td><%= comment.posts %></td>



注意单数
post
而不是复数
post

您也可以使用
addpostedtocomments
,但在创建Post引用时最好使用
Ref
。这将添加一个带有索引的
post\u id
。重新启动rails服务器。同样的问题,我所做的是rails生成migration AddPostedToComments post\u id:integer,这清除了第一个错误,但现在我得到了一个未定义的方法“post\u comments\u path”,我一直在玩弄,它仍然不起作用。我认为这与我的联想有关,对吗?类Postresources :posts do resources :comments end
<td><%= comment.posts %></td>
<td><%= comment.post %></td>