Estoy siguiendo Railscast #199 para permitir que mi aplicación web se vea en un navegador móvil. Funciona muy bien, excepto cuando trato de acceder a la información en una interfaz con pestañas utilizando UJS en la versión móvil. Al hacer clic en las pestañas funciona en la aplicación web, pero en el lado móvil recibo un error 406. (Intenté esto después de configurar el User Agent como iPhone en Safari. También probé en iOS Simulator y mi iPhone. Ni tiempo cargado nada).Rails 3: tipo MIME móvil arroja un error 406 después de intentar cargar contenido con JavaScript
A continuación se muestra un código para una de las pestañas. ¿Alguien puede ayudarme a enfocarme en lo que está pasando? Aquí está mi código.
Aquí está la acción profile_about en profiles_controller.rb
:
def profile_about
@profile = Profile.find(params[:id])
respond_to do |format|
format.js { render :layout => nil }
end
end
En mi profiles/show.mobile.erb
(esto es exactamente el mismo código como en profiles/show.html.erb
):
<div id="tabs">
<ul id="infoContainer">
<li><%= link_to "Cred", profile_cred_profile_path, :class=> 'active', :remote => true %></li>
<li><%= link_to "About", profile_about_profile_path, :class=> 'inactive', :remote => true %></li>
</ul>
<div id="tabs-1">
<%= render :partial => 'profile_cred' %>
</div>
</div><!-- end tabs -->
(NOTA: Tengo un archivo para profiles/_profile_about.html.erb
y profiles/_profile_about.mobile.erb
.)
Aquí es mi profiles/profile_about.js.erb
:
$("#tabs-1").html("<%= escape_javascript(render(:partial => 'profile_about'))%>");
Mi Heroku registros que muestra el 406:
2012-03-08T03:02:55+00:00 app[web.1]: Started GET "/profiles/1/profile_about" for 98.218.231.113 at 2012-03-08 03:02:55 +0000
2012-03-08T03:02:55+00:00 heroku[router]: GET myapp.com/profiles/1/profile_about dyno=web.1 queue=0 wait=0ms service=14ms status=406 bytes=1
2012-03-08T03:02:55+00:00 app[web.1]: Processing by ProfilesController#profile_about as JS
2012-03-08T03:02:55+00:00 app[web.1]: Parameters: {"id"=>"1"}
2012-03-08T03:02:55+00:00 app[web.1]: Completed 406 Not Acceptable in 3ms
2012-03-08T03:02:55+00:00 heroku[nginx]: 98.218.231.113 - - [08/Mar/2012:03:02:55 +0000] "GET /profiles/1/profile_about HTTP/1.1" 406 1 "http://myapp.com/profiles/1" "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3" myapp.com
Desde correr tail -f logs/development.log
:
Started GET "/profiles/1/profile_about" for 127.0.0.1 at Wed Mar 07 22:35:36 -0500 2012
Processing by ProfilesController#profile_about as JS
Parameters: {"id"=>"1"}
PK and serial sequence (5.4ms) SELECT attr.attname, seq.relname
FROM pg_class seq,
pg_attribute attr,
pg_depend dep,
pg_namespace name,
pg_constraint cons
WHERE seq.oid = dep.objid
AND seq.relkind = 'S'
AND attr.attrelid = dep.refobjid
AND attr.attnum = dep.refobjsubid
AND attr.attrelid = cons.conrelid
AND attr.attnum = cons.conkey[1]
AND cons.contype = 'p'
AND dep.refobjid = '"goals_profiles"'::regclass
PK and custom sequence (2.5ms) SELECT attr.attname,
CASE
WHEN split_part(def.adsrc, '''', 2) ~ '.' THEN
substr(split_part(def.adsrc, '''', 2),
strpos(split_part(def.adsrc, '''', 2), '.')+1)
ELSE split_part(def.adsrc, '''', 2)
END
FROM pg_class t
JOIN pg_attribute attr ON (t.oid = attrelid)
JOIN pg_attrdef def ON (adrelid = attrelid AND adnum = attnum)
JOIN pg_constraint cons ON (conrelid = adrelid AND adnum = conkey[1])
WHERE t.oid = '"goals_profiles"'::regclass
AND cons.contype = 'p'
AND def.adsrc ~* 'nextval'
Profile Load (1.3ms) SELECT "profiles".* FROM "profiles" WHERE "profiles"."id" = '1' LIMIT 1
Completed 406 Not Acceptable in 30ms
¿Está usted en el entorno de desarrollo correcto? ¿Qué dice el log/development.log sobre el 500? – brutuscat
Acaba de actualizarse con la información en mi registro cuando hago clic en "acerca de" con un agente de usuario de iPhone. – tvalent2