Рендеринг партиала в рельсах с использованием jquery - PullRequest
1 голос
/ 01 августа 2011

Я пытаюсь настроить панель навигации на моей домашней странице, которая загружает частичку в элемент div, когда пользователь нажимает на ссылки. Я следовал за шагами в этом посте и изменил их так, как мне казалось: Rails 3 - link_to для частичного вызова с использованием jquery ajax

Мой код:

Вид / страницы / home.html.erb:

<%= link_to "Files", :action => 'load_upload_partial', :remote => true %>

. , .

<div id="main_frame"></div>

pages_controller:

def load_upload_partial  
    respond_to do | format |  
      format.js {render :layout => false}  
    end
end

/ просмотров / добавления / load_upload_partial.js.erb:

$("#main_frame").html( "<%= escape_javascript( render( :partial => "/upload/upload_form" ) %>" );

Частичное в этом примере это просто форма. Когда я нажимаю на ссылку, я получаю пустую страницу с адресной строкой: http://localhost:3000/load_upload_partial?remote=true

Это заставляет меня думать, что ссылка не вызывает ajax GET-запрос (если это правильная терминология). Если это так, есть ли что-то, что мне нужно добавить в мой файл application.js? Я следовал за Railscast # 136 по рельсам и jquery, но не мог понять, какие биты кода application.js применимы к моему делу. Любые мысли очень ценятся. Благодарю. Том

Ответы [ 4 ]

4 голосов
/ 01 августа 2011

Теперь я склонен избегать использования RJS, как вы собираетесь. Я предпочитаю создавать шаблоны js с помощью таких инструментов, как руль.

Я использую только ajax для получения необработанных данных, а затем воссоздаю частичную часть клиента. Это намного лучше для загрузки сервера и передачи данных.

0 голосов
/ 11 ноября 2013

столкнулся с той же проблемой - подсказка была в неправильно сформированном html - взгляните на значение атрибута href тега, созданного вашим кодом. Могу поспорить, это выглядит прикольно. Вот правильный код:

    <%= link_to "Files", your_path, action: 'load_upload_partial', remote: true %>
0 голосов
/ 19 февраля 2013

вы пытались использовать .load () вместо .html ()?

Также попробуйте использовать эту строку вместо:

$("#main_frame").html( "<%= escape_javascript( render( :partial => '/upload/upload_form' ) %>" );
0 голосов
/ 01 августа 2011

Я думаю, что вы должны изменить свою ссылку на:

<%= link_to "Files", {:action => 'load_upload_partial' }, remote => true %>

Проблема связана с сигнатурой метода link_to.

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