Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 在隐藏字段中传递Post ID的值_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 在隐藏字段中传递Post ID的值

Ruby on rails 在隐藏字段中传递Post ID的值,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,这与我的另一个问题是一致的;当我提交属于某个特定帖子的新评论时,试图获得正确的帖子id _form.html.erb <%= f.hidden_field :project_id, :value => params[:id] %> <%= f.hidden_field :post_id, :value => params[:id].post_id %> <%= f.hidden_field :user_id, :value => current_u

这与我的另一个问题是一致的;当我提交属于某个特定帖子的新评论时,试图获得正确的帖子id

_form.html.erb

<%= f.hidden_field :project_id, :value => params[:id] %>
<%= f.hidden_field :post_id, :value => params[:id].post_id %>
<%= f.hidden_field :user_id, :value => current_user.id %>
params[:id]>
参数[:id].post\u id%>
当前用户id%>

如果看不到更多的代码,就很难确切地知道您在做什么,但我猜@post实例变量是使用控制器中的
@post=post.find(params[:id])
设置的

# this is not needed, on the create, get it from the post?
<%= f.hidden_field :project_id, :value => params[:id] %>
# if you do want to pass it, guessing something like this
<%= f.hidden_field :project_id, :value => @post.project_id %>

# pass the post id to the create action
<%= f.hidden_field :post_id, :value => @post.id %>
# if the comment has a project_id
# @comment.project = @post.project ?

# do not send this in hidden field, get the value in your controller
# otherwise the user can change this value to another user when submitting the form
<%= f.hidden_field :user_id, :value => current_user.id %>
#这是不需要的,在创建时,从帖子中获取?
参数[:id]>
#如果你真的想通过考试,猜猜像这样的事情
@post.project_id%>
#将post id传递给create操作
@post.id%>
#如果注释具有项目id
#@comment.project=@post.project?
#不要在隐藏字段中发送,在控制器中获取值
#否则,用户可以在提交表单时将此值更改为其他用户
当前用户id%>

您可能还想考虑在注释的情况下使用嵌套路由?

我建议阅读rails指南中的视图帮助程序:


该页面实际上有一篇带有注释的文章的代码示例。问题的解决方法是简单地将部分中的内容放回实际的视图文件中,然后使用

<%= f.hidden_field :post_id, :value => params[:id].post_id %>
params[:id].post\u id%>

然而,正如house9所指出的;使用隐藏字段在表单中传递值是一个巨大的安全漏洞。因此,请改变它。

感谢您指出此应用程序的安全缺陷。我现在要去研究它,把那些值放在控制器里,这样它就不会被操纵。至于其他的代码,请参阅我之前发布的问题。