2015-01-16 1 views
1

Rails 3 앱에 토큰 입력 필드를 구현했습니다.Rails tokenInput 값을 다시로드하지 않습니다.

내 양식

<%= label_tag :tag_tokens, 'Tags' %> 
<%= text_field_tag 'tag_tokens', "data-pre" => params[:tag_tokens] %> 

$(function() { 
    $("#tag_tokens").tokenInput("/data/tags.json", { 
     crossDomain: false, 
     prePopulate: $("#tag_tokens").data("pre"), 
     theme: "facebook" 
    }); 

이 결과를 반환하는 검색 페이지입니다 : 여기에 관련 코드입니다. 반환 된 값과 함께 토큰 입력이 훌륭하게 작동합니다. 내가 겪고있는 문제는 페이지가 제출 된 후에 텍스트 상자에 값이 남아 있거나로드되는 것입니다. text_field_tag의 "data-pre" => params[:tag_tokens] 코드는 처리해야하지만 작업 할 필요가 없습니다! 어떤 도움을 주셔서 감사합니다.

답변

1

제 3 매개 변수 (제 2가 아님)로 data-pre를 전달해야하므로 text_field_tag (text_field가 아님)을 사용하고 있습니다. 다음은 후손을위한 모든 코드입니다.

보기

<%= label_tag :tag_tokens, 'Tags' %> 
<%= text_field_tag 'tag_tokens', nil, "data-pre" => @tag_token_names.to_json %> 
JS

$(function() { 
    $("#tag_tokens").tokenInput("/data/tags.json", { 
     crossDomain: false, 
     prePopulate: $("#tag_tokens").data("pre"), 
     theme: "facebook" 
    }); 
}); 
</script> 

노선

match "/tags" => "data#tags", :as => 'tag_token_search' 

제어기

def tags 
    @tags = Tag.where("name like ?", "%#{params[:q]}%") 
    respond_to do |format| 
     format.html 
     format.json { render :json => @tags.map(&:attributes) } 
    end 
    end