2011-04-14 4 views
1

HTML의 div 요소 중 하나를 업데이트하려면 link_to : remote를 사용하고 있습니다. 이것은 단지 초보자 용 코드 일뿐입니다. 그러나 링크를 클릭해도 업데이트가 발생하지 않습니다. 이것은 list.html.erb입니다link_to : remote-Rails 3와 관련된 문제

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

: 여기에 코드입니다

<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> 

그래서에 링크 "안녕하세요 테스트"를 클릭, 브라우저에서 URL을로 변경 : http://localhost:3000/samples?remote=true&update=response_id&url[action]=updater

그러나 현재 시간으로 설정하려는 요소 인 div은 UI에서 발생하지 않습니다. 여기서 문제가 될 수있는 것은 무엇입니까?

routes.rb : http://pastebin.com/wmKsa1DD 생성 된 HTML 코드 : 방화범에 http://pastebin.com/stU3FpL8 HTML 응답 : url_for이 동작을 변경하지 않고 사용 http://pastebin.com/WjsB7zAh


는 함께 게시물을 업데이트했습니다.

+0

이 적절한 링크를 만들지 못하는 것 같습니다. 링크에 대해 생성 된 html 코드를 검사 했습니까? –

+0

은 샘플 자원 경로가 – fl00r

+0

인데 그 이유는 다음과 같습니다. url 옵션이 link_to : 에 적합하지 않음 http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to –

답변

0

1 :

은 (JQuery와)과 같을 것이다 당신의 사업부를 업데이트하는 "방법 레일"당신은 또한 rails.js 파일을 포함해야한다. 일반 레일에는 다음과 같이한다 :

<%= javascript_include_tag :defaults %> 

2 : updater_samples_path 또는 [:updater, :samples]

3 : 당신은 당신의 경로를 표시해야합니다 나는 URL을이 이름을 사용하는 것을 선호합니다. updater 방법은 없습니다 GET 방법을 사용하는 경우, 당신은 그것을 정의한다 :

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

4 : 불을 지르고 당신의 AJAX 응답으로 자체. 따라서 앱을 쉽게 디버깅 할 수 있습니다. 또한 우리는 응답을 표시 할 수 있으므로 상황을보다 잘 이해할 수 있도록

1

url_for 사용하십시오 :

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

나는 100 % 확실하지 않다, 그러나 나는 생각하지 않는다 : 업데이트가 Rails3 지금은 주로 UJS에 의존하기 때문에, 작업 할 것입니다.

$('div#test_id').bind('ajax:complete', function(event, xhr) { 
    $(this).html($.parseJSON(xhr.responseText)); 
})