Problema de enrutamiento / representación móvil de Rails jquery

Estoy siguiendo un tutorial http://fuelyourcoding.com/getting-started-with-jquery-mobile-rails-3/ transformando las vistas en una sencilla aplicación Rails 3 con andamios en una interfaz móvil jquery.

Después de crear un nuevo registro, se me pasa a la vista de presentación y, de hecho, veo los resultados de la vista de presentación, ya que se muestran los dos campos recién creados del registro, sin embargo, la URL es http://localhost:3000/currencies en el navegador. Y cuando veo la fuente, la fuente es en realidad la vista de índice, no la vista de presentación que se representa en el navegador, lo cual es bastante extraño. ¿Alguna idea de por qué está sucediendo esto?

Archivo de gemas:

source 'http://rubygems.org'

gem 'rails', '3.0.10'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'
gem 'jquery-rails'

Rutas:

Mycurrency::Application.routes.draw do
  resources :currencies

  #match ':name' => 'Currencies#show', :as => 'currency_name'

  root :to => 'currencies#index'

Controlador:

class CurrenciesController < ApplicationController
  # GET /currencies
  # GET /currencies.xml
  def index
    @currencies = Currency.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @currencies }
    end
  end

  # GET /currencies/1
  # GET /currencies/1.xml
  def show
   # @currency = Currency.find(params[:id])

    if params[:name]
      if Currency.where(:name => params[:name]).first != nil
        @currency = Currency.where(:name => params[:name]).first
      else
        redirect_to root_path
      end    
    else
      @currency = Currency.find(params[:id])
    end

   # respond_to do |format|
    #  format.html # show.html.erb
     # format.xml  { render :xml => @currency }
  #  end
  end

  # GET /currencies/new
  # GET /currencies/new.xml
  def new
    @currency = Currency.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @currency }
    end
  end

  # GET /currencies/1/edit
  def edit
    @currency = Currency.find(params[:id])
  end

  # POST /currencies
  # POST /currencies.xml
  def create
    @currency = Currency.new(params[:currency])

    respond_to do |format|
      if @currency.save
        format.html { redirect_to(@currency, :notice => 'Currency was successfully created.') }
        format.xml  { render :xml => @currency, :status => :created, :location => @currency }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @currency.errors, :status => :unprocessable_entity }
      end
    end
  end

  # PUT /currencies/1
  # PUT /currencies/1.xml
  def update
    @currency = Currency.find(params[:id])

    respond_to do |format|
      if @currency.update_attributes(params[:currency])
        format.html { redirect_to(@currency, :notice => 'Currency was successfully updated.') }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @currency.errors, :status => :unprocessable_entity }
      end
    end
  end

  # DELETE /currencies/1
  # DELETE /currencies/1.xml
  def destroy
    @currency = Currency.find(params[:id])
    @currency.destroy

    respond_to do |format|
      format.html { redirect_to(currencies_url) }
      format.xml  { head :ok }
    end
  end
end

application.html.erb:

<!DOCTYPE html>
<html>
<head>
  <title>Mycurrency</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0rc2/jquery.mobile-1.0rc2.min.css" />
  <%= javascript_include_tag :defaults %>
<script src="http://code.jquery.com/mobile/1.0rc2/jquery.mobile-1.0rc2.min.js"></script>
  <%= csrf_meta_tag %>
</head>
<body>
<div data-role="page">
    <%= yield %>
</div>

</body>
</html>

preguntado el 08 de noviembre de 11 a las 18:11

2 Respuestas

jQuery Mobile carga páginas a través de AJAX, las agrega al DOM y luego las mejora con todo el estilo de jQuery Mobile. Debido a este método de cargar páginas a través de AJAX, la fuente de la página no cambia cuando un usuario navega por el sitio.

Para ver el código fuente de la página actual, debe actualizar la página web.

Recomiendo leer la documentación de jQuery Mobile para navegación AJAX: http://jquerymobile.com/demos/1.0rc2/docs/pages/page-navmodel.html

respondido 08 nov., 11:22

Gracias Jasper por la información. El problema que tengo es el mismo que se aborda aquí. forum.jquery.com/topic/…. - ponzicoder

¿Alguien ha encontrado una solución para esto? Seguramente no podemos ser los únicos que enfrentamos este problema en las aplicaciones Rails 3 / JQM. - jn29098

Agregue esto a su diseño. Obliga a la caché del navegador a actualizar la URL.

<div data-role="page" id="home" data-url="<%= request.path %>">

Respondido el 06 de junio de 13 a las 10:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.