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 %>
既然你这么说了,那就太有道理了!非常感谢。很乐意帮忙!!