Ruby on Rails Tuesday, June 13, 2017

> On Jun 13, 2017, at 10:39 PM, fugee ohu <fugee279@gmail.com> wrote:
>
>
>
> On Tuesday, June 13, 2017 at 9:44:21 PM UTC-4, Walter Lee Davis wrote:
>
> > On Jun 13, 2017, at 9:40 PM, fugee ohu <fuge...@gmail.com> wrote:
> >
> >
> >
> > On Tuesday, June 13, 2017 at 9:32:57 PM UTC-4, Walter Lee Davis wrote:
> >
> > > On Jun 13, 2017, at 9:18 PM, fugee ohu <fuge...@gmail.com> wrote:
> > >
> > >
> > >
> > > On Tuesday, June 13, 2017 at 9:10:56 PM UTC-4, Walter Lee Davis wrote:
> > >
> > > > On Jun 13, 2017, at 9:07 PM, fugee ohu <fuge...@gmail.com> wrote:
> > > >
> > > > ActionController::ParameterMissing in CommentsController#new
> > > >
> > > > param is missing or the value is empty: comment
> > > >
> > > > class CommentsController < ApplicationController
> > > >
> > > >
> > > > def comment_params
> > > > params.require(:comment).permit(:comment, :commentable_id, :commentable_type)
> > > > end
> > > >
> > > >
> > >
> > > What does the form look like that sends to this controller?
> > >
> > > Walter
> > >
> > > >
> > > > --
> > > > 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/a7beac71-d952-4b4d-ae2c-15f3a0f444c3%40googlegroups.com.
> > > > For more options, visit https://groups.google.com/d/optout.
> > >
> > >
> > > <%= link_to 'Comment', new_comment_path(commentable_type: 'post', commentable_id: commentable.id) %>
> > >
> > > http://localhost:3000/comments/new?commentable_id=13&commentable_type=post
> > >
> > > Since the form never rendered I'm not sure if I should include it here
> >
> > Aha. I see what the problem could be. Your new method is trying to load a set of params, which is not the way this is usually done. Traditionally, the #new method is a GET request, which loads a generic form built around an empty new object. Since you are trying to set up the relationship with the commentable polymorphic object, maybe you should use a nested route to send that to the controller, or have a separate strong parameters accessor just for this form. You're sending the parameters as bare querystring options in the link helper, not nesting them into the comment object, which is why your accessor is failing you. If you changed the link to be
> >
> > new_comment_path( 'comment[commentable_type]': 'post', 'comment[commentable_id]: commendable.id)
> >
> > ...then your existing accessor will work, but that's a lot of typing when you could probably do this a lot easier with nested routes.
> >
> > Walter
> >
> > >
> > > --
> > > 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/c5404141-69fe-4676-80d2-159bc96fab14%40googlegroups.com.
> > > For more options, visit https://groups.google.com/d/optout.
> >
> >
> > Nested on the non-existent commentable ?
>
> The commentable had better exist at this point, otherwise, what are you putting in the type and ID attributes? This is a polymorphic relationship, commentable is meant to stand in for whatever -- Article, Image, BlogPost -- whatever you want to comment on. For the link you posted in the second message to this thread to work at all, you must already have persisted that *whatever* object, and that is what the commentable will be in this context.
>
> Walter
>
> >
> > --
> > 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/9c2fc223-8335-4992-8df3-e7a11b452ef2%40googlegroups.com.
> > For more options, visit https://groups.google.com/d/optout.
>
>
> But there's no commentable model
>

Who wrote this code? Have you read the Rails Guide on Polymorphic Associations? http://guides.rubyonrails.org/association_basics.html#polymorphic-associations
Please start there.

Walter

> --
> 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/367a144f-26d2-471a-bbb8-5ba669f2f0a6%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-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/CFF127F4-ABD5-401B-BF34-A32D455D7141%40wdstudio.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment