我有一个使用simple_form gem的Rails应用。我有两个相关的模型,交易和股票。在交易形式中,我希望用户能够在文本字段中输入他们的股票代码符号。目前,我正在使用呈现选择框的关联功能。问题是我需要一个文本字段,因为我有大约一千种股票可供选择。
有没有办法可以做到这一点(有或没有简单表格)?
模特:
class Trade < ActiveRecord::Base
belongs_to :stock
end
class Stock < ActiveRecord::Base
has_many :trades
end
交易表格#new
<%= simple_form_for(@trade) do |f| %>
<%= f.association :stock %>
<% end %>
答案 0 :(得分: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