Rails 3 / Ajax - Включение link_to в ссылку Jquery

голоса
0

Я пытаюсь изменить гиперссылку в АЯКС ссылку. Таким образом, я могу связать с внешней мишенью при обновлении данных модели без отправки пользователя на действия пользовательского контроллера для обработки поста / перенаправления.

Мое приложение является основной галереи изображений, каждое изображение ссылки на внешний веб-сайт:

Вот мое частичное _pictures.html.erb:

<% @galleries.each do |g| %>
    <% for image in g.images %>
    <div id=picture>
      <%= render 'top_nav'%>

      <%= link_to g.source, :target => true do %>
        <%= image_tag image.file_url(:preview) %>
      <% end %>

      <%= will_paginate(@galleries, :next_label => Forward, :previous_label => Previous) %>
    </div>

    <br />

    <div class=image_description>
      <h2>
      <%= g.title %>,
      <span class=time>
        <%= distance_of_time_in_words(g.created_at, Time.now, include_seconds = false)%> ago
      </span>
      </h2>
    </div>      
    <% end %>
<% end %>

Который оказывается на моем index.html.erb:

<h1>Share and click images to unlock more...</h1>

<div id=galleries>
<%= render 'pictures' %>
</div>

Я считаю, что я был в состоянии изменить ссылку в АЯКС связи с последующим в application.js:

$(function() {
  $(#picture a).live(click, function() {

    return false;
  });
});

Поскольку link_to не работает (что я ожидал). Теперь я пытаюсь написать обработчик (не уверен, если это правильное слово) в index.js.erb, я знаю, что это путь не так, но то, что я кусочки вместе:

$(#picture).html.(<%= escape_javascript(render)(pictures)) %>)

Как я могу получить эту ссылку обратно работает, но с помощью JavaScript? И если бы я хотел сделать AJAX вызов метода модели, где бы я начала писать этот код, в application.js или index.js.erb?

Обязательный механизм защиты: Я сосу на JavaScript.

Задан 26/07/2011 в 19:10
пользователем
На других языках...                            


3 ответов

голоса
0
$(function() {
    $("#picture a").live("click", function(event) {
        event.preventDefault(); // prevent the click from linking anywhere

        $.ajax({
            url:'/my_ajax_file.erb',
            dataType:'html',
            data: $(this).attr('id'), // send whatever here...
            type: 'post',
            success:function(data){
                $('#picture').html(data);
            }
        });

    });
});
Ответил 26/07/2011 в 19:16
источник пользователем

голоса
0

пытаться $("#picture").html("<%= escape_javascript(render("pictures")) %>");

но если вы используете прототип и изменения JQuery $ за jQuery.noConflict ()

  $(function() {
      $("#picture a").live("click", function() {
          $.getScript(this.href);
          return false;
      });
  });
Ответил 26/07/2011 в 19:19
источник пользователем

голоса
0

Не забудьте иметь в своем контроллере что-то вроде:

respond_to do |format|
   format.html do
      redirect_to #whatever you normally redirect to for html
   end
   format.js do
      render :json => some_json_thing #this will get passed back as the data element in the ajax callback above
   end
end
Ответил 26/07/2011 в 19:23
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more