所以我正在使用ROR创建一个Web应用程序,我无法弄清楚这个表单的正确语法是什么。我目前正在为评论和帖子制作一种关联类型的代码。
<%= form_for @comment do |f| %>
<p>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= f.label :comment %><br />
<%= f.text_area :comment %>
</p>
<p>
<%= f.submit "Add Comment" %>
</p>
<% end %>
答案 0 :(得分:4)
您的表单没问题,除了第一行(并且您不需要user_id的隐藏字段,这是通过您的关系完成的):
<%= form_for(@comment) do |f| %>
应该是:
<%= form_for([@post, @comment]) do |f| %>
现在您渲染一个表单,用于创建或更新特定帖子的评论。
但是,您应该更改模型和控制器。
class Post
has_many :comments
end
class Comment
belongs_to :post
end
这将允许您访问@ post.comments,显示属于特定帖子的所有评论。
在您的控制器中,您可以访问特定帖子的评论:
class CommentsController < ApplicationController
def index
@post = Post.find(params[:post_id])
@comment = @post.comments.all
end
end
通过这种方式,您可以访问特定帖子的评论索引。
<强>更新强>
还有一件事,你的路线也应该是这样的:
AppName::Application.routes.draw do
resources :posts do
resources :comments
end
end
这将使您可以访问post_comments_path(以及更多路由)