Sto seguendo Railscast #199 per consentire la visualizzazione della mia app Web in un browser mobile. Funziona alla grande, tranne quando cerco di accedere alle informazioni in un'interfaccia a schede usando UJS nella versione mobile. Fare clic sulle schede funziona nell'app Web, ma sul lato mobile viene visualizzato un errore 406. (Ho provato questo dopo aver impostato l'agente utente come iPhone in Safari. Ho anche testato su iOS Simulator e il mio iPhone. Né tempo caricato nulla.)Rails 3: il tipo MIME mobile genera un errore 406 dopo il tentativo di caricare il contenuto con JavaScript
Di seguito è riportato un codice per una delle schede. Qualcuno può aiutarmi a capire cosa sta succedendo? Ecco il mio codice.
Ecco l'azione profile_about in profiles_controller.rb
:
def profile_about
@profile = Profile.find(params[:id])
respond_to do |format|
format.js { render :layout => nil }
end
end
Nel mio profiles/show.mobile.erb
(questo è lo stesso codice esattamente come in 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: non ho un file per profiles/_profile_about.html.erb
e profiles/_profile_about.mobile.erb
.)
Ecco il mio profiles/profile_about.js.erb
:
$("#tabs-1").html("<%= escape_javascript(render(:partial => 'profile_about'))%>");
mio Heroku registra mostra la 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
Da esecuzione 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
Sei in ambiente di sviluppo giusto? Cosa dice il log/development.log a proposito del 500? – brutuscat
Appena aggiornato con le informazioni nel mio log quando clicco "about" con un agente utente di iPhone. – tvalent2