2012-10-12 21 views
0

我有一個Rails應用程序正在使用simple_form gem。我有兩個相關的模型,交易和股票。在交易形式中,我希望用戶能夠在文本字段中輸入其股票代碼。目前,我正在使用呈現選擇框的關聯功能。問題是我想要一個文本字段,因爲我有大約一千個股票可供選擇。簡單形式與文本字段關聯

有沒有一種方法可以做到這一點(有或沒有簡單的形式)?

型號:

class Trade < ActiveRecord::Base 
belongs_to :stock 
end 

class Stock < ActiveRecord::Base 
    has_many :trades 
end 

上交易#新

<%= simple_form_for(@trade) do |f| %> 
    <%= f.association :stock %> 
<% end %> 

回答

0

形式,您應該能夠只使用此語法:

<%= f.input :stock_id, :label => 'Enter your ticker:' %> 

問題這裏是用戶不會知道:stock_id是什麼,因爲它是對許多Stock對象之一的引用。

所以你可能想實現一個簡單的jquery autocomplete interface返回像這樣的股票列表:

[{:ticker => 'AAPL', :name => 'Apple Inc', :id => 1}, {:ticker => 'IBM', :name => 'International Business Machines', :id => 2}, etc ] 

然後,您可以顯示這樣的事情是自動完成的結果:

AAPL - Apple Inc 
IBM - International Business Machines 

,並允許用戶選擇他們正在尋找的那個。在後臺捕獲:id並將其用作關聯的:stock_id。

您將需要添加一個stocks_controller的行動,將一個字符串查找基於部分股票股票和返回類似20

def search 
    ticker_query = "%#{params[:ticker]}%" 
    stocks = Stock.where('ticker LIKE ?', ticker_query).limit(20) 
    render :json => stocks 
end 
+0

感謝馬特最大數的股票。我確實嘗試過這樣[這裏](http://stackoverflow.com/questions/12756705/rails-hashwithindifferentaccess-error),但我無法得到它的工作。根據你提供的代碼,我把這個'<%​​= f.input:stock_id,:label =>'在我的表單中輸入你的代碼:'%>',但我不確定如何將它連接到股票#搜索和自動完成。謝謝馬特。 – yellowreign

+0

今晚我會跟進更多細節。 –

+0

謝謝你的幫助馬特! – yellowreign