Ruby on rails 如何获得指向不同控制器的轨道形状

Ruby on rails 如何获得指向不同控制器的轨道形状,ruby-on-rails,forms,routing,erb,Ruby On Rails,Forms,Routing,Erb,我有一个创建新评论的表单。此代码存在于另一个控制器下的页面中(假设它是app/views/posts/show.html.erb) 如果我有如上所述的Comment.new,则表单可以工作,但我想为@Comment使用一个实例变量,如form\u,类似于此链接中的第一个代码段: 为了做到这一点,我想我需要像这样定义一个new函数,并分配一个空注释。我试着把这段代码放在posts\u controller和comments\u controller中 def新建 @comment=comme

我有一个创建新评论的表单。此代码存在于另一个控制器下的页面中(假设它是
app/views/posts/show.html.erb



如果我有如上所述的
Comment.new
,则表单可以工作,但我想为@Comment使用一个实例变量,如
form\u,类似于此链接中的第一个代码段:

为了做到这一点,我想我需要像这样定义一个
new
函数,并分配一个空注释。我试着把这段代码放在
posts\u controller
comments\u controller

def新建
@comment=comment.new
结束
但是当我用
@Comment替换
Comment.new
时,
我得到了以下错误:
ActionView::Template::error(表单中的第一个参数不能包含nil或为空):
这使我相信没有调用任何一个
新的
方法。我做错了什么

我的
routes.rb
如下所示:

Rails.application.routes.draw do
根目录:'posts#show'
资源:信息
结束

如果您使用显示页面(
app/views/posts/show.html.erb
)显示表单 在posts控制器的显示操作中添加此行

# posts_controller
def show
  @comment = Comment.new
end
如果您还想提交您的表单,而不是评论的创建操作,请在
form_for
标签中提及
url

<%= form_for @comment, url: posts_path do |f| %>
  <%= f.label :content %>
  <%= f.text_field :content %><br/>
  <%= f.submit %>
<% end %>



既然你这么说了,那就太有道理了!非常感谢。很乐意帮忙!!