2011-03-24 2 views
1

배경 : 나는 약 1 년 동안 RoR을 해왔고 꽤 편안하다. 그러나 나는 자바에 대해 아무것도 모른다.완전한 noob Jquery/Rails 설정 질문 (아마도)

난 내 레일 애플 리케이션에서 몇 가지 jquery autocomplete 물건 놀아왔다. 나는 거의 버전이 작동하고 있었지만 one to many 관계를 위해서도 토큰 화 된 필드가 필요했다.

오른쪽 큐에 - 좋은 오래된 라이언 베이츠는 railscast 않습니다. 그래서 지시를 따르기 시작합니다.

'jquery-rails'gem을 설치하기 시작했을 때 약간의 불안감이있었습니다. (나는 이미 j rails를 설치하여 다른 작업을 할 수있었습니다).

의심되는 것처럼, 몇 가지 문제가 발생했지만 다시 작동하도록했습니다.

어쨌든, 튜토리얼을 통해 대부분의 방법을 얻었습니다. 모든 것이 잘 진행되고 있습니다. 정확한 입력 필드를 찾기 위해 tokenizer 스크립트가 있는데 예상대로 작동합니다. 나는 json 링크도 테스트했다. 그것은 모든 올바른 것을 되돌려 보낸다. 아무 변화가없고, 내가 콘솔 창을 볼 때 다시 함께 제공 -

그러나 나는 텍스트 필드에 입력을 시작하면 : 나는 왜 잘못된 것입니다에 관한 추측을 할 수

Uncaught TypeError: Cannot call method 'replace' of undefined 
    jQuery.jQuery.extend._Deferred.deferred.resolveWith 
    done 
    jQuery.ajaxTransport.send.callback 

- 그러나 어떤 전문가의 조언이 크게 감사하겠습니다. 사전에

감사합니다 -

은 (내가 너무 formtastic 사용하고 또한 추가해야합니다).

+0

나는 이것이 도움이되지 않는다는 것을 알고 있지만, 내 목소리를 여기에 추가하여 희망을 얻고 싶었다. simple_form을 사용하는 것과 동일한 오류가 발생합니다. 문제가 무엇인지 모릅니다. 도움을 주시면 감사하겠습니다. – kakubei

답변

0

좋아, 마침내 알아 냈어.

내 저자 이름 열이 name이 아니라 author 인 것으로 나타났습니다. 따라서 js.coffee 스크립트 내부에서 변경하여 기본 검색 name을 재정의해야했습니다.

사용할 필요가있는 라인이다 : 이것은 실제로 오류의 Uncaught TypeError: Cannot call method 'replace' of undefined

을 고정

jQuery -> 
    $('#book_author_tokens').tokenInput '/authors.json' 
    theme: 'mac' 
    prePopulate: $('#book_author_tokens').data('load') 
    propertyToSearch: "author" 

:

propertyToSearch: "author" 

내 전체 book.js.coffee 파일은 이제 다음과 같습니다 물론 다른 열 이름을 사용하는 경우 author.rb 파일의 함수를 편집하여 다음을 반영 할 수 있습니다.

이에

= f.input :author_tokens, :data => { :load => @book.author } 

:

def self.tokens(query) 
     authors = where("author like ?", "%#{query}%") 
     if authors.empty? 
     [{id: "<<<#{query}>>>", author: "New: \"#{query}\""}] 
     else 
     authors 
     end 
    end 

    def self.ids_from_tokens(tokens) 
     tokens.gsub!(/<<<(.+?)>>>/) { create!(author: $1).id } 
     tokens.split(',') 
    end 

편집

나는 기존의 저자로 미리 채워 할 것을 fieldsto을 위해해야 ​​할 일을했을 또 다른 것은이 변경되었다

= f.input :author_tokens, :input_html => { :data => { :load => @book.author } } 

그리고 그러면 그들은 나타날 것입니다.

희망이 도움이됩니다.