2011-03-30 4 views
1

사용자가 자동 ​​완성 필드에서 장르를 선택하도록했습니다. 이 필드는 프로필의 편집보기에 있으므로 프로필 모델에 accepts_nested_attributes_for :genres이 있습니다. 또한 장르와 프로필은 서로 연결된 has_and_belongs_to_many입니다. 제 질문은 사용자가 선택한 장르를 어떻게 사용자 프로필에 맞게 설정합니까? 어떤 종류의 컨트롤러 코드가 필요합니까? 코드가 프로파일 또는 장르의 컨트롤러에 포함됩니까?자동 완성 필드에서 선택한 요소를 설정하는 방법

저는 이것을 자동 완성에 사용하고 있습니다 : http://loopj.com/jquery-tokeninput/ 나는 이미 genres 테이블을 미리 채우고 스크립트를 텍스트 필드에 연결했습니다. 사용자가 입력 할 때 바로 자동 완성이 제안을 표시합니다. 이제 선택한 장르로 데이터베이스를 업데이트하고 싶습니다. 이 데이터베이스는 장르와 프로필 간의 조인 테이블입니다. 어떻게 그리고 어디에서 이것을 할 수 있습니까?

요약하면 프로필 편집보기에서 버튼을 클릭하면 프로필 ID와 결합 테이블에 선택된 장르 ID 사이의 연관성을 저장하고 싶습니다.

ActiveRecord::UnknownAttributeError in ProfilesController#update 

unknown attribute: genre 
Rails.root: /rubyprograms/dreamstill 

app/controllers/profiles_controller.rb:18:in `update' 
app/controllers/profiles_controller.rb:17:in `update' 

여기 내 프로필 편집 뷰의 : 지금은이 오류가

<%= form_for(:profile, @profile, :url => {:controller => "profiles", :action => "update"}, :html => { :multipart => true, :method => :put }) do |f| %> 
... 
<%= f.fields_for :genre do |g| %> 
<div class="field"> 
     <%= g.label :name, "Genres" %><br /> 
     <%= g.text_field :name, :id => 'genre_field' %> 
    </div> 
<% end %> 
... 
<div class="action"> 
    <%= f.submit :profile, :value => "Update Profile" %> 
</div> 
<% end %> 
+0

의 ID를 저장하는 숨겨진 텍스트 필드가 ..이

<script type="text/javascript"> $(document).ready(function() { $("input[type=button]").click(function() { alert("Would submit: " + $(this).siblings("input[type=text]").val()); }); }); </script> 

이 매트 도움이 당신에게 무엇입니까? https://github.com/crowdint/rails3-jquery-autocomplete – Pravin

+0

본인은 자동 완성에 이것을 사용하고 있습니다. http://loopj.com/jquery-tokeninput/ 이미 데이터베이스를 미리 채웠으며 스크립트를 텍스트 필드에 연결했습니다. 이제 선택한 장르로 데이터베이스를 업데이트하고 싶습니다. –

답변

1

확인이 페이지 http://loopj.com/jquery-tokeninput/demo.html

이 페이지의 클릭에 따라, 요소의 경보 ID를 제출 내 이해. head에서 아래

스크립트는 는 기본적으로 자동 완성을 위해 사용하는 어떤 선택한 요소

+0

ahh cool ... 그래서 프로파일 ID와 결합 테이블에 선택된 장르의 ID 사이의 연관을 저장하는 데 어떻게 사용합니까? –

+0

이름은 자동 완성을위한 숨겨진'input'을'profile [gener_ids]'..로 만들었고 간단한'profile.save'로 트릭을해야합니다 – Pravin

+0

나는 혼란 스럽습니다 ... 숨겨진 입력은 무엇입니까? 코드 예제를 제공하고 컨트롤러의 어떤 방법으로 말해 주시겠습니까? –

관련 문제