Проблема с использованием link_to: remote - Rails 3 - PullRequest
1 голос
/ 14 апреля 2011

Я использую link_to: remote для обновления одного из элементов div в HTML.Это всего лишь код для начинающих.Однако обновление не происходит при нажатии на ссылку.Вот код:

class SampleController < ApplicationController
     def updater
        render :text => Time.now
     end
end

это список.html.erb:

<script type = "text/javascript" src = "/javascripts/prototype.js">
<%= link_to "Hello Testing",
    :update => "test_id",
    :url => {:action => 'updater'},
    :remote => true
%>
<div id="test_id"></div>

Поэтому, нажав на ссылку «Hello Testing», URL-адрес в браузере изменится на:http://localhost:3000/samples?remote=true&update=response_id&url[action]=updater

Однако элемент div, который я пытаюсь установить на текущее время, не появляется в пользовательском интерфейсе.В чем может быть проблема здесь?


Обновлено сообщение с:

rout.rb: http://pastebin.com/wmKsa1DD Сгенерированный HTML-код: http://pastebin.com/stU3FpL8 Ответ HTML вFirebug: http://pastebin.com/WjsB7zAh

Использование url_for не меняет поведение.

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

пожалуйста, используйте url_for:

<%= link_to "Hello Testing", url_for(:action => :updater),
        :update => "test_id", :remote => true %>

Я не уверен на 100%, но я не думаю, что: обновление будет работать, поскольку Rails3 теперь в основном использует ujs.

"Путь к рельсам" для обновления вашего div будет выглядеть (jquery):

$('div#test_id').bind('ajax:complete', function(event, xhr) {
   $(this).html($.parseJSON(xhr.responseText));
})
0 голосов
/ 14 апреля 2011

1: Вы должны также включить rails.js файл. Обычный в Rails это делает так:

<%= javascript_include_tag :defaults %>

2: я предпочитаю использовать это имя для URL: updater_samples_path или [:updater, :samples]

3: Вы должны показать свои маршруты. Если метод updater не использует метод GET, то вы должны определить его:

<%= link_to "Hello Testing", :update => "test_id", updater_samples_path, :method => :put, :remote => true %>

4: Используйте FIREBUG , чтобы просмотреть ваши ответы AJAX. Таким образом, вы можете легко отладить ваше приложение. Также вы можете показать нам свой ответ, чтобы мы лучше поняли ситуацию

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