0

我有一个使用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 %>
4

1 回答 1

0

您应该能够只使用以下语法:

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

这里的问题是用户将不知道 :stock_id 是什么,因为它是对许多 Stock 对象之一的引用。

所以你可能想要实现一个简单的jquery 自动完成接口,它返回一个股票列表,如下所示:

[{: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
于 2012-10-12T02:11:12.660 回答