Ruby on rails 如何将参数正确地传递到rails窗体

Ruby on rails 如何将参数正确地传递到rails窗体,ruby-on-rails,forms,model-view-controller,parameters,Ruby On Rails,Forms,Model View Controller,Parameters,我是学习rails的新手。我想尝试并创建一个简单的应用程序,用户可以写一篇文章,然后其他人可以在他们的文章上留下评论 我有三种型号。用户、帖子和评论。当我创建新评论时,在参数中带上post_id和user_id时遇到问题 这是我在评论控制器中的新方法 def new @comment = Comment.new(user_id: params[:user_id], post_id: params[:post_id]) end 在我的服务器中,看起来我正在传递params键(不确

我是学习rails的新手。我想尝试并创建一个简单的应用程序,用户可以写一篇文章,然后其他人可以在他们的文章上留下评论

我有三种型号。用户、帖子和评论。当我创建新评论时,在参数中带上post_id和user_id时遇到问题

这是我在评论控制器中的新方法

  def new
    @comment = Comment.new(user_id: params[:user_id], post_id: params[:post_id])
  end
在我的服务器中,看起来我正在传递params键(不确定这是否是正确的术语),并且正在查找值

Started GET "/comments/new?post_id=post_id&user_id=user_id" for ::1 at 2021-04-16 22:40:14 -0700
   (0.1ms)  SELECT sqlite_version(*)
Processing by CommentsController#new as HTML
  Parameters: {"post_id"=>"post_id", "user_id"=>"user_id"}
  Rendering comments/new.html.erb within layouts/application
  Rendered comments/_form.html.erb (Duration: 1.5ms | Allocations: 715)
  Rendered comments/new.html.erb within layouts/application (Duration: 1.8ms | Allocations: 814)
[Webpacker] Everything's up-to-date. Nothing to do
Completed 200 OK in 18ms (Views: 9.9ms | ActiveRecord: 0.6ms | Allocations: 10798)
我传递的参数是“post_id”,它应该是与正确的post相对应的整数

我不知道用谷歌搜索什么来找出如何获取参数。我想它可能嵌套在comments控制器下,所以我试过了

  def new
    @comment = Comment.new(user_id: params[:comments][:user_id], post_id: params[:comments][:post_id])
  end

这打破了我的密码。我不知所措。我甚至不知道用谷歌怎么解决这个问题。任何帮助都将不胜感激。谢谢。

您需要通过强参数:


除此之外,我认为应该对http请求使用post方法。

我的建议是不要在“GET”方法中传递太多参数。使用post方法,对于@thibault提到的强参数,需要按以下格式传递参数

{"comments" => {"post_id"=>"post_id", "user_id"=>"user_id"} }
在新操作中,只需呈现表单,在表单中输入值后,使用“POST”方法创建注释。rails中有许多表单帮助程序,您可以在此处查看它们 我建议您使用rails表单助手“form_with”——

如果您是rails新手,请使用“scaffold”,并通过观察每个操作的代码和日志来理解这些内容

   rails generate scaffold Comment 
   rails generate scaffold Comment