与文本字段的简单表单关联

时间:2012-10-12 01:24:14

标签: ruby-on-rails-3

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

1 个答案:

答案 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
相关问题