Rails AJAX JQuery проблема - PullRequest
       8

Rails AJAX JQuery проблема

1 голос
/ 21 марта 2010

Хорошо, у меня есть эта проблема, я пытаюсь использовать Jquery для загрузки части вместо указанного в списке объекта.

index.html.erb

<div class="style_image_<%= style.id %>" > <%=link_to image_tag(style.cover.pic.url(:small)), style %></div>

loadshow:

$(function() {
    $(".style_image_<%= style.id %> a").click(function() {
    $(".style_image_<%= style.id %>").html("loading... ")
    $(".style_image_<%= style.id %>").html("<%= escape_javascript(render("show")) %>")
    $.get(this.href, null, null, "html");
    return false;
  });
});

_show.html.erb:

<%=link_to image_tag(style.cover.pic.url(:normal)), style %>

Я получаю эту ошибку:

missing ) after argument list
[Break on this error] $(".style_image_<%= style.id %>").htm...scape_javascript(render("show")) %>")\n

Здесь есть две проблемы с моим кодом, во-первых, функция щелчка не нацелена на .style_image _ <% = style.id%> .... т.е. (.style_image_42), если я заменю цель css вместо 42 вместо _style.id цель нажатия работает; почему это?

И с этим изменением, или без него, _show частично не отображается, и выдается указанная выше ошибка.

Не очень хорошо с Javascript, любая помощь будет отличной!

приписка

Эффект, который я действительно хочу, похож на одну из тех супер крутых тем про груз: http://cargocollective.com/publikspace

Спасибо, Дэн!

альтернативный текст http://s3.amazonaws.com/data.tumblr.com/tumblr_kzu1cnOUUs1qbto6oo1_1280.png?AWSAccessKeyId=0RYTHV9YYQ4W5Q3HQMG2&Expires=1269597925&Signature=XuwwBhKKCKu3FWGpmqXmBqwxzS0%3D

Ответы [ 3 ]

2 голосов
/ 21 марта 2010

Конечно, вы можете иметь код ERB в файле javascript, назвать его xxxx.js.erb, и у вас есть доступ ко всему этому.

Взгляните на эту ссылку , которая показывает отличный пример того, как «отрегулировать» ссылки, просто добавив к ним класс. После этого вы можете классифицировать ссылку и создать файл .js.erb, который будет содержать ваш javascript (включая код erb), который будет вызван при успехе. и если вам тоже нужен доступ к class_id, теперь у вас также есть идентификатор объекта. id = "yourobj _ <% = @ yourobj.id%>"


UPDATE Причина, по которой ваш javascript терпит неудачу, заключается в том, что вам нужно экранировать кавычки в строке, которая выдает ошибку, например:

$(".style_image_<%= style.id %>").html("<%= escape_javascript(render(\"show\")) %>");

ИЛИ просто используйте одинарные кавычки, например:

$(".style_image_<%= style.id %>").html('%= escape_javascript(render("show")) %>');
0 голосов
/ 27 марта 2010

Я до сих пор не уверен, почему мой файл js.erb не понимает <% = style.id%>, может быть, это еще не сделано.

У меня есть два решения этой проблемы:

  1. написать javascript в контроллере и использовать link_to_remote.

  2. Ненавязчивая загрузка пути ссылки в DIV ссылки:

Ссылка на Image_tag, как указано выше!

и в моем файле Application.js

$(function() {

$(".style_image a").live('click', function(event) { 

    $(this).closest(".style_teaser").load(this.href + " #show_photo");


    return false;       

});
});

При использовании этого метода, если javascript отключен, ссылка приведет вас к пути показа объекта.

Благодарю Ника Крейвера за предоставленную мне информацию по этому поводу!

0 голосов
/ 21 марта 2010

Причина, по которой это не работает, заключается в том, что в файлах JavaScript не может быть кода ERB. Все, что находится между <%%> в файле JavaScript, не будет оценено Rails.

Я бы посоветовал либо загружать изображения с помощью AJAX, либо просто помещать их в HTML и использовать jQuery, чтобы отображать или скрывать их при необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...