Запустить функцию JavaScript onLoad в представлении Rails? - PullRequest
1 голос
/ 02 декабря 2010

мой вид рельсов выглядит так (это частичное):

=javascript_include_tag :defaults

#scroller
 -@other_images.each do |img|
  .thumbnail_wrapper
    .thumbnail_image
      =image_tag img.image.url(:thumbnail), :class => 'button', :onClick => "replaceImg(#{img.id});",  :onLoad => "setLastID(#{ @other_images[0].id });"

Я хочу вызвать функцию setLastID (# {@other_images [0] .id});только один раз, когда весь вид загружается.Тем не менее, я не мог понять, как ... это было единственное место, где я мог поставить его там, где это работало.Но теперь он вызывается каждый раз внутри цикла ... Помогите !!

Ответы [ 3 ]

1 голос
/ 03 декабря 2010

Это пример, где вы хотите динамически генерировать JavaScript в частичном, так как ruby переменные обязательны. Пока такие звонки очень короткие, я в порядке.

=javascript_include_tag :defaults

#scroller
 -@other_images.each do |img|
  .thumbnail_wrapper
    .thumbnail_image
      =image_tag img.image.url(:thumbnail), :class => 'button', :onClick => "replaceImg(#{img.id});"

:javascript
  setLastID(#{@other_images[0].id});
0 голосов
/ 07 декабря 2010

Рассматривали ли вы вместо этого загрузку шаблона js.erb? Вы можете добавить в DOM, используя javascript вместо haml, и у вас все еще есть доступ к вашим переменным Rails. Если вам не нужно использовать эту функцию javascript setLastID () где-либо еще, вы можете определить ее прямо в своем шаблоне js.erb вместо некоторого файла javascript. Если вам это нужно где-то еще, убедитесь, что ваш файл JavaScript загружен правильно. Ссылайтесь на файл в вашем макете, а затем в файле javascript, просто сделайте что-то вроде этого:

$(document).ready(function() {
  alert("I'm loaded!");
});
0 голосов
/ 02 декабря 2010

Сделайте это ненавязчиво. пометьте свое последнее изображение классом (мы будем использовать «button-last» для аргументации) и поместим его в событие document.ready () в javascript за кулисами, например application.js (это работает, если вы вы используете jquery, вам нужно будет перевести его на ваш выбор):

$(document).ready(function(){
  setLastID($("img.button-last").attr("id"));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...