2017-08-14 41 views
14

Implementacja paska postępu JQuery, więc po przewinięciu w dół powinien on pokazać zielony pasek u góry. Kiedy zaczynam przewijanie, pasek postępu nie pojawia się. I sprawdzić elementu na pasku elementu to pokazuje szerokość% idzie w górę patrz ilustracjaPasek postępu Rails5 + JQuery nie działa

enter image description here

enter image description here

scroll.js

$(document).on('scroll', function() { 

    var pixelsFromTop = $(document).scrollTop() 

    var documentHeight = $(document).height() 
    var windowHeight = $(window).height() 

    var difference = documentHeight - windowHeight 

    var percentage = 100 * pixelsFromTop/difference 

    $('.bar').css('width', percentage + '%') 

}) 

show.html.erb

<div class="progress"> 
    <div class="bar"></div> 
</div> 

<section class="day"> 

    <h2><%= "To make #{number_to_currency @product.revenue}" %></h2> 
    <p class="lead"><%= "You need to make #{number_to_currency @product.monthly_amount} a month" %><br/> 
    <%= "You need to make #{number_to_currency @product.daily_amount} a day" %></p> 
</section> 


<section class="people"> 

    <h2>Or if you create and sell a product</h2> 
     <table> 
     <p class="lead"><%= "To make #{@product.revenue } 10,000 people to buy a 
     #{number_to_currency @product.create_and_sell_product_10000} product" %><br/> 

     <%= "To make #{@product.revenue } 5,000 people to buy a 
     #{number_to_currency @product.create_and_sell_product_5000} product" %><br/> 

     <%= "To make #{@product.revenue } 2,000 people to buy a 
     #{number_to_currency @product.create_and_sell_product_2000} product" %><br/> 

     <%= "To make #{@product.revenue } 1,000 people to buy a 
    #{number_to_currency @product.create_and_sell_product_1000} product" %><br/> 

     <%= "To make #{@product.revenue } 100 people to buy a 
    #{number_to_currency @product.create_and_sell_product_100} product" %></p> 
     </table> 
</section> 

patrząc na logi, których nie ma scr oll ale jego pokazujący szerokość elementu idzie w górę (patrz zrzut ekranu prev)

Started GET "/products/scroll.js" for 127.0.0.1 at 2017-08-14 12:27:17 +0100 
Processing by ProductsController#show as JS 
    Parameters: {"id"=>"scroll"} 
    Product Load (0.4ms) SELECT "products".* FROM "products" WHERE "products"."id" = $1 LIMIT $2 [["id", 0], ["LIMIT", 1]] 
Completed 404 Not Found in 3ms (ActiveRecord: 0.4ms) 

ActiveRecord::RecordNotFound (Couldn't find Product with 'id'=scroll): 

app/controllers/products_controller.rb:67:in `set_product' 

produkty controller.rb

def set_product 
     @product = Product.find(params[:id]) 
    end 

mam to w moich trasach

Rails.application.routes.draw do 
    resources :products 

    root 'products#new' 
end 


Started POST "/products" for 127.0.0.1 at 2017-08-16 17:03:11 +0100 
Processing by ProductsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"ZU4tSNn0PsbSL2CTB45yIuBlrn5OePTYPSbIcdKThzJuu/k7GsiIhFf7JJ98pC5NmhGVg5QyekokpzR1s4tv4A==", "product"=>{"revenue"=>"2000", "months"=>"2"}, "commit"=>"Show Me How Much to Charge!"} 
    (0.9ms) BEGIN 
    SQL (3.5ms) INSERT INTO "products" ("revenue", "months", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["revenue", "2000.0"], ["months", 2], ["created_at", "2017-08-16 16:03:11.679460"], ["updated_at", "2017-08-16 16:03:11.679460"]] 
    (46.6ms) COMMIT 
Redirected to http://localhost:3000/products/82 
Completed 302 Found in 57ms (ActiveRecord: 51.0ms) 


Started GET "/products/82" for 127.0.0.1 at 2017-08-16 17:03:11 +0100 
Processing by ProductsController#show as HTML 
    Parameters: {"id"=>"82"} 
    Product Load (0.3ms) SELECT "products".* FROM "products" WHERE "products"."id" = $1 LIMIT $2 [["id", 82], ["LIMIT", 1]] 
    Rendering products/show.html.erb within layouts/application 
    Rendered products/show.html.erb within layouts/application (7.2ms) 
Completed 200 OK in 398ms (Views: 395.0ms | ActiveRecord: 0.3ms) 


Started GET "/products/scroll.js" for 127.0.0.1 at 2017-08-16 17:03:12 +0100 
Processing by ProductsController#show as JS 
    Parameters: {"id"=>"scroll"} 
    Product Load (0.3ms) SELECT "products".* FROM "products" WHERE "products"."id" = $1 LIMIT $2 [["id", 0], ["LIMIT", 1]] 
Completed 404 Not Found in 1ms (ActiveRecord: 0.3ms) 



ActiveRecord::RecordNotFound (Couldn't find Product with 'id'=scroll): 

app/controllers/products_controller.rb:67:in `set_product' 

enter image description here

+0

Co wyzwala to żądanie 'Started GET" /products/scroll.js "'? Koliduje z ** zaradną trasą show **, a ponieważ Rails spodziewa się ': id' w adresie URL, więc traktuje' scroll' jako 'id', co spowodowało ten błąd. – Pavan

+0

Na moich trasach mam zasoby: produkty https: // github.com/neilp666/product_pricing_calculator – Neil

+0

To jest ok, ale chcę wiedzieć, co wywołało tę prośbę 'Started GET" /products/scroll.js "'? – Pavan

Odpowiedz

9

Ten błąd

ActiveRecord :: RecordNotFound (nie można odnaleźć produkt z 'id' = przewijania)

jest wywołany przez nieprawidłowe ścieżki aktywów. Kiedy patrzysz na app/layouts/application.html.erb, widać to

<script src="scroll.js"></script> 

URL src jest źle. To następnie służyło jako /products/scroll.js, co jest w konflikcie z /products/:id i spowodowało ten błąd. Masz scroll.js w folderze /app/assets/javascripts, więc musisz użyć /assets/scroll.js. Zmieniając go lubić poniżej powinien naprawić błąd

<script src="/assets/scroll.js"></script> 

LUB

Wystarczy zadzwonić go z application.js włączając go jak ten

//= require scroll 

który generuje

<script src="/assets/scroll.js?body=1"></script> 

Proponuję przeczytać o Asset Pipeline, aby lepiej zrozumieć.

+0

Dodany kod i działa, ale tylko jeśli dodasz jakiś tekst w klasie div postępu. jeśli nie dodaję żadnego tekstu, nie pokazuje paska postępu. Ale dzięki i sprawdzę ponownie potok aktywów! – Neil