I have a rails 2 app that I am upgrading to rails 3. I am exposing a web service to a phone app. When I make a request from the phone application the CONTENT_TYPE is application/json In rails 2 my controller recognizes this as json, but in rails 3 my controller recognizes it as html. respond_to do |format| format.html { } format.json { } end Any ideas why the format isn''t being set to json in rails 3? Do i have to do something to enable json routing? -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 08 Jun 2011, at 09:17, pipplo wrote:> I have a rails 2 app that I am upgrading to rails 3. > > I am exposing a web service to a phone app. When I make a request > from the phone application the CONTENT_TYPE is application/json > > In rails 2 my controller recognizes this as json, but in rails 3 my > controller recognizes it as html. > > respond_to do |format| > format.html { } > format.json { } > end > > Any ideas why the format isn''t being set to json in rails 3? Do i > have to do something to enable json routing?This might be useful: http://ryandaigle.com/articles/2009/8/10/what-s-new-in-edge-rails-default-restful-rendering Best regards Peter De Berdt -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
I replied to this earlier but I think I may have accidentally clicked discard instead of send. Sorry if this is a duplicate: I tried that method (using respond_with). Even then the requests gets processed as HTML. So on my Rails 2 setup just setting CONTENT_TYPE = ''application/json'' causes the request to be processed as a json format. On Rails 3 that isn''t working so everything gets set as HTML. Do I need to set HTTP_ACCEPT instead of CONTENT_TYPE? I get the feeling Rails 3 uses CONTENT_TYPE for the incoming parsing (since the incoming json is parsed correctly) and I need to set some other type to force a JSON *response*. It isn''t clear where that should be set though. Thanks Joe On Jun 8, 1:18 am, Peter De Berdt <peter.de.be...-LPO8gxj9N8aZIoH1IeqzKA@public.gmane.org> wrote:> On 08 Jun 2011, at 09:17, pipplo wrote: > > > I have a rails 2 app that I am upgrading to rails 3. > > > I am exposing a web service to a phone app. When I make a request > > from the phone application the CONTENT_TYPE is application/json > > > In rails 2 my controller recognizes this as json, but in rails 3 my > > controller recognizes it as html. > > > respond_to do |format| > > format.html { } > > format.json { } > > end > > > Any ideas why the format isn''t being set to json in rails 3? Do i > > have to do something to enable json routing? > > This might be useful:http://ryandaigle.com/articles/2009/8/10/what-s-new-in-edge-rails-def... > > Best regards > > Peter De Berdt-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 08 Jun 2011, at 22:02, pipplo wrote:> I replied to this earlier but I think I may have accidentally clicked > discard instead of send. Sorry if this is a duplicate: > > I tried that method (using respond_with). Even then the requests gets > processed as HTML. > > So on my Rails 2 setup just setting CONTENT_TYPE = ''application/json'' > causes the request to be processed as a json format. > > On Rails 3 that isn''t working so everything gets set as HTML. Do I > need to set HTTP_ACCEPT instead of CONTENT_TYPE? I get the feeling > Rails 3 uses CONTENT_TYPE for the incoming parsing (since the incoming > json is parsed correctly) and I need to set some other type to force a > JSON *response*. It isn''t clear where that should be set though.Can you verify that the following headers are present, the accept header might actually be what you''re missing out on: Accept: application/json Content-Type: application/json If everything goes well, you should get back a response with this in the header: Content-Type: application/json; charset=utf-8 For XML that would be: Accept: application/xml Content-Type: application/xml Best regards Peter De Berdt -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
I will try to set HTTP_ACCEPT when I get home. I know it''s not being set now, but I wasn''t sure if it was required or not. Something must have changed from 2.3.4 to 3 or I set some configuration in 2.3.4 that I dont remember.. On Wed, Jun 8, 2011 at 1:16 PM, Peter De Berdt <peter.de.berdt-LPO8gxj9N8aZIoH1IeqzKA@public.gmane.org>wrote:> > On 08 Jun 2011, at 22:02, pipplo wrote: > > I replied to this earlier but I think I may have accidentally clicked > discard instead of send. Sorry if this is a duplicate: > > I tried that method (using respond_with). Even then the requests gets > processed as HTML. > > So on my Rails 2 setup just setting CONTENT_TYPE = ''application/json'' > causes the request to be processed as a json format. > > On Rails 3 that isn''t working so everything gets set as HTML. Do I > need to set HTTP_ACCEPT instead of CONTENT_TYPE? I get the feeling > Rails 3 uses CONTENT_TYPE for the incoming parsing (since the incoming > json is parsed correctly) and I need to set some other type to force a > JSON *response*. It isn''t clear where that should be set though. > > > Can you verify that the following headers are present, the accept header > might actually be what you''re missing out on: > > Accept: application/json > Content-Type: application/json > > If everything goes well, you should get back a response with this in the > header: > > Content-Type: application/json; charset=utf-8 > > For XML that would be: > > Accept: application/xml > Content-Type: application/xml > > > Best regards > > > Peter De Berdt > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. >-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 08 Jun 2011, at 22:22, Joe Koston wrote:> I will try to set HTTP_ACCEPT when I get home. I know it''s not > being set now, but I wasn''t sure if it was required or not. > > Something must have changed from 2.3.4 to 3 or I set some > configuration in 2.3.4 that I dont remember..Well, the Accept header is what tells the server what response you accept, while the Content-Type header tells the server what type of data the posted data is, as you can read at http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html Rails 2 might have been more forgiving or you might have just appended .json to the url, but Rails 3 has the correct behaviour. Best regards Peter De Berdt -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Thanks. Just in case anyone is curious adding the Accept headers worked perfect! On Wed, Jun 8, 2011 at 1:32 PM, Peter De Berdt <peter.de.berdt-LPO8gxj9N8aZIoH1IeqzKA@public.gmane.org>wrote:> > On 08 Jun 2011, at 22:22, Joe Koston wrote: > > I will try to set HTTP_ACCEPT when I get home. I know it''s not being set > now, but I wasn''t sure if it was required or not. > > Something must have changed from 2.3.4 to 3 or I set some configuration in > 2.3.4 that I dont remember.. > > > Well, the Accept header is what tells the server what response you accept, > while the Content-Type header tells the server what type of data the posted > data is, as you can read at > http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html > > Rails 2 might have been more forgiving or you might have just appended > .json to the url, but Rails 3 has the correct behaviour. > > > Best regards > > > Peter De Berdt > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. >-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.