2011-12-17 4 views
2

これは私の他の質問に沿っています。特定の投稿に属する新しいコメントを投稿するときに正しいpost_idを取得しようとしています。秘密のフィールドに投稿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 %> 

答えて

4

種類が、私の推測では、@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 %> 

コメントの場合は、ネストされたルートの使用を検討することもできます。

私はレールガイドからのビューヘルパーについて読んでお勧めします: http://guides.rubyonrails.org/index.html

http://guides.rubyonrails.org/getting_started.htmlページが実際に問題を解決するには、単にからから入れていたコメント

+0

このセキュリティ上の欠陥を指摘していただきありがとうございます。それを今研究し、それらの値をコントローラの中に入れて操作できないようにするつもりです。 –

0

とポストのためのコード例を持っています部分的バック、実際のビューファイルに変換し、house9が指摘したように、しかし

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

を使用します。隠しフィールドを使用してフォームに値を渡すのは、大きなセキュリティ上の欠陥です。だからそれを変える。

+0

他のコードについては、この前に投稿した前の質問を参照してください。 –

関連する問題