【发布时间】:2025-12-04 11:45:01
【问题描述】:
我正在为我的 Rails 项目使用 rails-jquery-autocomplete gem,它带有普通表单助手,其中一个模型的数据位于多个控制器/视图上。就像假设我有一个 cmets 模型并在很多场合使用 cmets。
在这种特殊情况下,我在管理命名空间中使用了多个表单。对于普通的选择字段,我有一个可行的解决方案,但正如您可以想象的那样,可供选择的选项会随着时间的推移而增加,我不希望有一个包含数百个结果的选择字段。因此,我希望它变成一个自动完成的文本字段。但我不知道如何访问正确的数据。
在我的示例中,我在外国管理员控制器上使用@gallery 的表单。在现在的表格中,我让编辑选择哪个@game 属于@gallery。像这样:
<%= form_for(@gallery) do |f| %>
...
<%= f.select :game_id, options_for_select(@games.map {|g| [g.name, g.id]}) %>
...
<% end %>
如果我使用
<%= f.autocomplete_field :name, autocomplete_name_games_path %>
相反,它告诉我,:name 不适用于我的 @gallery 对象,这是真的,到目前为止,我将 autocomplete :name 添加到游戏控制器中,因为它应该填充来自它的数据。
但我想我也可以在管理控制器的表单中使用游戏控制器的 :name 的自动完成功能。
当我尝试将它与:game_id 一起使用时
<%= f.autocomplete_field :game_id, autocomplete_name_games_path %>
然后它告诉我 id 丢失了,我添加了 :id_element => '#some_element' 以及我添加的隐藏字段的正确值。我检查了源代码并且隐藏字段在那里,但这不会更改此自动完成 gem 上的错误消息。
也许有人可以告诉我,如何在外部控制器的视图中使用 rails-jquery-autocomplete gem 访问数据?
【问题讨论】:
标签: jquery ruby-on-rails autocomplete