Rails JQuery Mobile Routing / Rendering Issue - PullRequest
0 голосов
/ 08 ноября 2011

Я следую учебному пособию http://fuelyourcoding.com/getting-started-with-jquery-mobile-rails-3/, преобразующему представления в простом приложении Rails 3 в виде скаффолдинга в мобильный интерфейс jquery.

После создания новой записи я перехожу в представление представления и фактически вижу результаты представления представления, как в двух вновь созданных полях записи, однако URL имеет значение http://localhost:3000/currencies в браузере. И когда я просматриваю источник, источником на самом деле является представление индекса, а не представление представления, отображаемое в браузере, что довольно странно. Есть идеи, почему это происходит?

Gemfile:

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'

Маршруты:

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

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

  root :to => 'currencies#index'

Контроллер:

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>

Ответы [ 2 ]

0 голосов
/ 06 июня 2013

Добавьте это к вашему макету. Вынуждает кеш браузера обновлять URL.

<div data-role="page" id="home" data-url="<%= request.path %>">
0 голосов
/ 08 ноября 2011

jQuery Mobile загружает страницы через AJAX, добавляет их в DOM, а затем расширяет их с помощью всех стилей jQuery Mobile.Благодаря такому способу загрузки страниц через AJAX, источник страницы не меняется, когда пользователь перемещается по сайту.

Чтобы просмотреть исходный код текущей страницы, необходимо обновить веб-страницу.

Я рекомендую прочитать документацию jQuery Mobile для AJAX Navigation: http://jquerymobile.com/demos/1.0rc2/docs/pages/page-navmodel.html

...