help: ActionController::UnknownFormat in FooController#index

8 views
Skip to first unread message

tom

unread,
Mar 5, 2018, 12:13:51 PM3/5/18
to Ruby on Rails: Talk
HI,

i have a couple of 'seo' routes, which are not responding well

eg:
  match  'whatever/in/:seoterm'       , as: 'seo_whatever _in'  , :to => 'foos#index', via: [:get]  , :mode=>{:x=>' whatever ',:y=>1}


 respond_to do |format|
    format.html { 
      }
    format.js {
    }
    format.json {
        render :json =>  JSON::parse({:list => @.... }
    }
   # format.xml  { 
        #render xml: @person.to_xml(include: @company) 
       # render xml: @commutes.to_xml #(include: @company) 
    #  }
  end


--> the only thing  i see is that the brwoser comes as */* , which shouldnt be the problem:
Started GET "/whatever/in/St.%20Peters" for 10.0.1.37 at 2018-03-05 12:09:39 -0500
Processing by FooController#index as


any ideas?

thx

Hassan Schroeder

unread,
Mar 5, 2018, 12:30:35 PM3/5/18
to rubyonrails-talk
On Mon, Mar 5, 2018 at 9:13 AM, tom <toma...@gmail.com> wrote:

> i have a couple of 'seo' routes, which are not responding well

What does that mean?

( http://www.catb.org/esr/faqs/smart-questions.html )

--
Hassan Schroeder ------------------------ hassan.s...@gmail.com
twitter: @hassan
Consulting Availability : Silicon Valley or remote

tom

unread,
Mar 5, 2018, 12:34:08 PM3/5/18
to Ruby on Rails: Talk
getting 406 due to rails giving me ActionController::UnknownFormat
and i dont know why.

same routes(pattern) in a different controller work just fine. only difference is that the other one only does render, not repsond_to


--
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/CACmC4yC_xOFmo%2BZtxBi1Rr%3DLVhzFWYnjVbmG_TSZTAhyNx3mDw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Hassan Schroeder

unread,
Mar 5, 2018, 12:54:11 PM3/5/18
to rubyonrails-talk
On Mon, Mar 5, 2018 at 9:33 AM, tom <toma...@gmail.com> wrote:
> getting 406 due to rails giving me ActionController::UnknownFormat
> and i dont know why.

Maybe because GET "/whatever/in/St.%20Peters" provides no
information about the requested response format?

> same routes(pattern) in a different controller work just fine. only
> difference is that the other one only does render, not repsond_to

I'd think that would be a good clue...

tom

unread,
Mar 5, 2018, 1:00:10 PM3/5/18
to Ruby on Rails: Talk
so how can i pass this along? why is it not assuming html?


--
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.

Hassan Schroeder

unread,
Mar 5, 2018, 1:16:29 PM3/5/18
to rubyonrails-talk
On Mon, Mar 5, 2018 at 9:59 AM, tom <toma...@gmail.com> wrote:
> so how can i pass this along? why is it not assuming html?

Because computers don't make assumptions? 😀

Why are you telling it to respond differently depending on the format
and then *not providing a format*??

tom

unread,
Mar 5, 2018, 1:28:06 PM3/5/18
to Ruby on Rails: Talk
, :defaults => { :format => 'html' } 
fixed it
thank you


--
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.

Hassan Schroeder

unread,
Mar 5, 2018, 2:00:51 PM3/5/18
to rubyonrails-talk
On Mon, Mar 5, 2018 at 10:27 AM, tom <toma...@gmail.com> wrote:
>
> , :defaults => { :format => 'html' }
> fixed it

Awesome!

Rob Biedenharn

unread,
Mar 5, 2018, 2:16:36 PM3/5/18
to rubyonra...@googlegroups.com
> Started GET "/whatever/in/St.%20Peters" for 10.0.1.37 at 2018-03-05 12:09:39 -0500
> Processing by FooController#index as

You really should have added one more line from the log here.

It was very likely looking for a :format => '%20Peters" because of the '.' in the URL path.

Look at the output from `rails routes` to see the various ways that you might be routing to foos#index

Another way to fix this tends to "break" having multiple formats. You can add:

> eg:
>   match  'whatever/in/:seoterm'       , as: 'seo_whatever _in'  , :to => 'foos#index', via: [:get]  , :mode=>{:x=>' whatever ',:y=>1}

, constraints: { seoterm: /.+/ }

so that :seoterm slurps all the remaining characters of the URL. This breaks the "implicit" (.:format) that gets added because the constraint will match the '.' and everything after it leaving nothing to match the "optional" format.

-Rob

tom

unread,
Mar 5, 2018, 4:13:26 PM3/5/18
to Ruby on Rails: Talk
you are correct. the space and or the period was the problem here.

ill try out different solutions now

thx all!


--
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.
Reply all
Reply to author
Forward
0 new messages