@Colin is right.  I think here that you should be asking, how can I learn 
the params returned? 

To debug, modify.  That is what I have used, others may have better 
suggestions:

  if @notice.save
      puts params.to_yaml
      if !params[:notice][:active_comment_relationship][:commentee_id].nil? # 
THE OFFENDING LINE
        @notice.create_comment(params[:notice][:active_comment_relationship
][:commentee_id])
      end
    end

puts params.to_yaml will return the structure and values to your logging.

Otherwise, you are testing too generally for uncertain aspects: if !params[:
notice][:active_comment_relationship][:commentee_id].nil?   

Test each aspect for the moment to ascertain missing values:

unless params[:notice].blank?
....
unless params[:notice][:active_comment_relationship].blank?
....
unless params[:notice][:active_comment_relationship][:commentee_id].blank?
...








On Sunday, August 2, 2015 at 4:15:18 PM UTC-4, Bazley wrote:
>
> notice.rb:
>
>   has_one  :active_comment_relationship, class_name: "Commentrelationship"
> ,
>                                          foreign_key: "commenter_id",
>                                          dependent: :destroy
>   has_one  :supernotice, through: :active_comment_relationship, source: :
> commentee
>   accepts_nested_attributes_for :active_comment_relationship
>
> _notice.html.erb:
>
>     <%= form_tag( {controller: "notices", action: "create"}, method: 
> "post", class: "comment_form", multipart: true ) do %>
>       <%= hidden_field_tag :callsign, @character.callsign %>
>       <%= hidden_field_tag 
> "notice[active_comment_relationship][commentee_id]", notice.id %>
>       .
>       .
>
> notices_controller.rb:
>
>     @notice = @character.notices.build(notice_params)
>     if @notice.save
>       if !params[:notice][:active_comment_relationship][:commentee_id].nil
> ? # THE OFFENDING LINE
>         @notice.create_comment(params[:notice][:
> active_comment_relationship][:commentee_id])
>       end
>     end
>
>     def notice_params
>       params.require(:notice).permit( :content, :picture, :latitude, :
> longitude, active_comment_relationship_attributes: [:commentee_id] )
>     end
>
> The code above gives the following error:
> undefined method `[]' for nil:NilClass
>
> Sometimes a notice is submitted with a blank/nil :commentee_id, so I would 
> have thought !params[:notice][:active_comment_relationship][:commentee_id
> ].nil?
> would have worked. How do I write this correctly? How do you correctly 
> access nested parameters?
>

-- 
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+unsubscr...@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/df3fb306-48f0-43a7-80a7-6dc4c31580a4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to