1

我最近开始学习 Rails 3。我正在考虑实现自动完成功能的最佳方式。

我的 Rails 应用程序中有 4 个模型,结构如下。

class User
  has_many :friendships
  has_many :bills
end

class Friendship
  belongs_to :user
end

class Bill
  belongs_to :user
  has_many :bill_splits
end

class BillSplit
  belongs_to :bill
  has_on :friendship
end

Bill模型背后的想法BillSplit是,一旦用户创建账单,账单将根据与共享账单的朋友数量自动拆分。

我在 bill_split 上使用嵌套属性,以便我可以使用单个表单来创建 bill 和 bill_split 条目。我想为friend_name(用户的朋友列表Friendship)添加一个自动完成字段friendship_id,然后保存。我想知道最好的方法是什么。

一种可能的方法是创建一个虚拟属性friend_namebill_split该属性自动完成名称并填充friendship_id. 另一种是删除friendship_id并替换为friend_name. 有没有其他方法可以做到这一点?

此外,是否也可以引用另一个模型中的字段而不仅仅是模型本身?

谢谢!

4

2 回答 2

2

我了解您希望使用嵌套表单实现自动完成文本字段。首先,我在您的模型中看不到任何嵌套关联。如果主要形式是 a bill,那么您应该将以下内容添加到其模型中:

accepts_nested_attributes_for :bill_splits

虽然bill_splits可以独立,但将上述行添加到Bill模型将有助于控制器,您可以在其中实现:bill_split_attributes参数数组。然后,在您的表单中,您调用 afields_for :bill_splits并照常处理嵌套表单。

现在,关于自动补全......无论您仍然使用 Rails 3 还是升级到 Rails 4,rails-jquery-autocompletegem 都是支持两者的官方存储库!它包括很棒的文档,以及带有嵌套表单示例的示例应用程序。gem 使用jQuery UI autocomplete库,并将 ActiveRecord 条目合并到提交的数据集中。

不幸的是,根据您提供的信息,我无法进一步帮助配置嵌套表单。正如我之前所说,我不知道您的表结构或您当前的代码以更好地评估。好消息,gem 的维护者很活跃并回答问题/问题!

于 2015-07-08T15:42:11.087 回答
0

您可能想观看此截屏视频http://railscasts.com/episodes/102-auto-complete-association

如果您使用 rails4,还请查看rails4-autocomplete gem

于 2014-01-08T12:12:25.183 回答