Javascript

  1. Generuje nowa aplikację w rails 3.2.14
  2. Używam komendy "rails g scaffold tweet name:string
    3 Kod js wprowadzany w application.js działa ale w tweets.js już nie

Może ktos podpowiedzieć co powinnam jeszcze dodać aby pisać js w tweets.js?

A co masz w application.js?

application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files // listed below. // // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. // // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the // the compiled file. // // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD // GO AFTER THE REQUIRES BELOW. // //= require jquery //= require jquery_ujs //= require_tree .
tweets.js

[code]
$(function() {
$("#button1").click(function() {
alert(“test”);
return false;
})
})

#$ ->

("#button1").click ->

alert “test”[/code]

application.html.erb

[code]

Javatest <%= stylesheet_link_tag "application", :media => "all" %> <%= javascript_include_tag :defaults %> <%= csrf_meta_tags %>

<%= yield %>

[/code]

A jaka jest lokalizacja pliku tweets.js?

taka sama jak application.js w assets/javascripts

powinno być chyba

$ -> ("#button1").on 'click' -> alert "test"
bo samo click działa chyba inaczej.

[quote=wafcio]powinno być chyba

$ -> ("#button1").on 'click' -> alert "test"
bo samo click działa chyba inaczej.[/quote]
ten kod jest zahaszowany

Proponuję inaczej zalinkować skrypty:

<%= javascript_include_tag "application" %>

[quote=Er Lang]Proponuję inaczej zalinkować skrypty:

<%= javascript_include_tag "application" %>

[/quote]
To by było dziwne, gdyby to pomogło. javascript_include_tag :defaults linkuje do application.js jeśli ten plik istnieje.

Nie wiem czemu, ale mnie javascipt_include_tag :defaults linkuje coś takiego:

<script src="/javascripts/defaults.js"></script>

Ja testowalem to w RoR 4 i jak widzę w dokumentacji dla tej wersji nie ma nic o :defaults (w przeciwienstwie do wczesniejszych wersji).

[quote=alicja][quote=wafcio]powinno być chyba

$ -> ("#button1").on 'click' -> alert "test"
bo samo click działa chyba inaczej.[/quote]
ten kod jest zahaszowany[/quote]
A ja się nie zgodze. Jest diamentralna różnica

("#button1").click ->

to nie jest to samo co

("#button1").on 'click' ->

http://stackoverflow.com/a/11878976/1767973

When we use click

$("button.alert").click(function() { alert(1); });
with the above, a separate handler gets created for every single element that matches the selector. That means many matching elements would create many identical handlers and thus increase memory footprint
dynamically added items won’t have the handler - ie, in the above html the newly added “Alert!” buttons won’t work unless you rebind the handler.

When we use .on

$("div#container").on('click', 'button.alert', function() { alert(1); });
with the above, a single handler for all elements that match your selector, including the ones created dynamically.

1 Like