2011-03-29 88 views
0

我試圖使用this autocomplete field和一組預先填充的流派。爲什麼這個自動填充字段不起作用?

流派與配置文件has_and_belongs_to_many關聯。

我有這個在我的路線:

resources :profiles 
resources :genres 

這是我的風格控制器:

respond_to :html, :json 

def index 
    respond_with(@genres = Genre.search(params[:q])) 
end 

這是我的類型模式:

has_and_belongs_to_many :videos 
has_and_belongs_to_many :profiles 

scope :search, lambda {|q| where("name LIKE ?", '%q%') } 

這是在我的應用程序.js:

$("#genre_field").tokenInput(genres_path); 

這是我的個人資料編輯觀點:

<%= f.fields_for :genre do |g| %> 
<div class="field"> 
     <%= g.label :name, "Genres" %><br /> 
     <%= g.text_field :name, :id => 'genre_field' %> 
    </div> 
<% end %> 

我已經預先填入流派表一組類別,並且我包括jquery.tokeninput.js和CSS文件。

那麼爲什麼文本字段不顯示自動完成結果?我錯過了什麼?

+0

你的where子句中有錯字的報價,它是像在代碼中一樣? 'where(「name LIKE?',」%q%')}''應該是'where(「name LIKE?」,'%q%')}' – McStretch 2011-03-29 12:50:54

+0

yea ...仍然無法讓它工作 – 2011-03-29 17:01:26

+0

在行$(「#genre_field」)。tokenInput(genres_path);'是腳本中變量中的genres_path? – McStretch 2011-03-29 17:07:04

回答

1

根據你的意見,我想我已經找出你的問題。在你的application.js您具備以下條件:

$("#genre_field").tokenInput(genres_path);

其中的DOM元素#genre_fieldgenres_path接收數據映射。但是,在您的JavaScript文件的上下文中不存在

genres_path。方法genres_path存在於ruby中,因爲rails通過routes.rb生成該方法,而不是JS。爲了解決這個問題,您需要提供相對路徑genres_path代表你的JS代碼:

$("#genre_field").tokenInput("/path/to/genres");

您需要建立某種形式的js.erb的文件,它利用了genres_path

$("#genre_field").tokenInput(<%= genres_path %>);

您可以添加一個內嵌的腳本來處理所有這些代碼以類似的方式向js.erb文件的html.erb文件:

<%= f.fields_for :genre do |g| %> 
<div class="field"> 
    <%= g.label :name, "Genres" %><br /> 
    <%= g.text_field :name, :id => 'genre_field' %> 
</div> 
<% end %> 

<script> 
    $("#genre_field").tokenInput(<%= genres_path %>); 
</script> 
+0

很酷謝謝...你推薦哪一個? – 2011-03-29 19:06:38

+0

如果是我,我會選擇第一個選擇:'$(「#genre_field」)。tokenInput(「/ path/to/genres」);'在我的JS文件中。這很簡單,不需要新的文件或嵌入在HTML中的腳本。話雖如此,你在JS中硬編碼的路徑不能直接鏈接到你的rails應用程序。因此,如果您以任何方式更改路徑,都會出現錯誤,但您應該能夠快速追蹤它 - 特別是如果您使用Firebug等工具診斷問題。 – McStretch 2011-03-29 19:25:22

+0

我很困惑......我真的把它傳遞給''/ path/to/genres''? JS提供了這個路徑? – 2011-03-29 20:20:12