Ruby on Rails
Wednesday, December 3, 2014
I would recommend a different solution. You should not rely on an form to capture the user_id, unless the user is actually selectable from a dropdown. Yes, you could put the user_id in a hidden form field; however, that leaves it open to be changed by the user.
I hope this is helpful
On Wednesday, December 3, 2014 8:17:52 AM UTC-6, Psycho Shine wrote:
-- Rather, I would do it this way --
PostController.rb
def new
@post = Post.new
end
def create
@post = current_user.posts.create post_params
end
private
def post_params
params.require(:post).permit(:title, :body)
end
CommentsController.rb
def new
@post = Post.find(params[:post_id])
@comment = @post.comments.new
end
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.new comment_params
@comment.user_id = current_user.id
if @comment.save
redirect_to @post
else
render action: new
end
end
private
def comment_params
params.require(:comment).permit(:body)
end
On Wednesday, December 3, 2014 8:17:52 AM UTC-6, Psycho Shine wrote:
Thank you so much, brilliant solution)
понедельник, 1 декабря 2014 г., 3:19:22 UTC-8 пользователь Vivek Sampara написал:def comment_params params(:comment).merge!(:user_id => params[:user_id]) params.require(:comment).permit(:body, :user_id) endOn Mon, Dec 1, 2014 at 4:29 PM, Psycho Shine <annd...@gmail.com> wrote:To view this discussion on the web visit https://groups.google.com/d/--sure.posts_controller.rb...privatedef post_paramsparams.require(:post).permit(:title, :body) endclass CreatePosts < ActiveRecord::Migrationdef changecreate_table :posts do |t|t.string :titlet.text :bodyt.integer :user_idt.timestampsendendendcomments_controller.rb...privatedef comment_paramsparams.require(:comment).permit(:body) endclass CreateComments < ActiveRecord::Migrationdef changecreate_table :comments do |t|t.integer :bodyt.integer :post_idt.integer :user_idt.timestampsendendendthank you
воскресенье, 30 ноября 2014 г., 11:47:19 UTC-8 пользователь Vivek Sampara написал:Could you show an example of what post_params contains ?On Sun, Nov 30, 2014 at 4:24 PM, Psycho Shine <annd...@gmail.com> wrote:--Hi all!
I have 3 models: user, post, comment
User has_many :posts, :comments Post belongs_to :user, has_many :comments Comments belongs_to :user, postSo for creating post i have action create
def create @post = Post.new(post_params) if @post.save redirect_to @post else render 'new' end endNow if following the rules of relations between Post and Comment, for creating a comment i have next action in CommentController:
def create @post = Post.find(params[:post_id]) @comment = @post.comments.create(comment_params ) redirect_to post_path(@post) endMy question is: How rewrite the actions if i want create post and comment from user?
if i try to create Comment from User, i create next action (don't know am i right?)
def create @user = User.find(params[:user_id]) @post = user.posts.build(post_params) if @post.save flash[:success] = "Post created!" redirect_to post_path else flash[:errors] = "Post not created!" render 'new' end endHow create a comment from user, that will be in relations with post? i mean comment must have user_id and post_id?
tnx 4 help
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com .
To post to this group, send email to rubyonra...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/8a1c4cf8- .cf08-4dad-b934-d0f27ce21684% 40googlegroups.com
For more options, visit https://groups.google.com/d/optout .
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com .
To post to this group, send email to rubyonra...@googlegroups.com.msgid/rubyonrails-talk/ .ae822215-0f1c-4efe-bcd9- 70bc4bf97f87%40googlegroups. com
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/d4423d37-a571-4843-8580-91a11c0e8e00%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment