rails4-自动完成。在自动填充字段中获取关联名称

时间:2014-09-29 13:21:59

标签: ruby-on-rails ruby-on-rails-4

我正在尝试使用https://github.com/peterwillcn/rails4-autocomplete

添加自动完成字段

我有一个属于城市的主题模型。城市属于国家。即城市=伦敦。然后city.country.name =英格兰。

我可以通过

显示自动填充功能以显示城市名称
#controller
class TripsController < ApplicationController
    autocomplete :city, :name

#view
<%= f.autocomplete_field :city_id, autocomplete_city_name_trips_path %>

但我希望国家名称也显示在自动完成字段中。即英国伦敦。不只是伦敦。

有更好的方法吗?

编辑:这也将城市名称传递给控制器​​,我希望它能通过city_id

2 个答案:

答案 0 :(得分:1)

如果你在另一个领域拥有这个国家,那么使用自动完成功能非常容易。您希望在视图中使用update_elements选项来告知自动填充需要填写的其他字段。

<%= f.autocomplete_field :city,
        autocomplete_department_name_incidents_path,
        update_elements: {country: '#trips_country'} %>

上面代码段中的#trips_country是您要更新的表单中字段的ID。 country:是自动完成为您提取的额外数据。

因此,您还需要转到表单并告知自动填充功能以获取其他数据。

autocomplete :city, :name, extra_data: [:country]

如果所有东西都在同一个型号中,这就是可行的。我从未试图使用自动完成功能从其他模型中提取数据,因此我不知道它是否可行。希望这足以让你到达那里。

答案 1 :(得分:0)

rails4-autocomplete gem有你想要使用的选项display_value

class TripsController < ApplicationController
  autocomplete :city, :name, display_value: :name_with_country

然后在City模型中

def name_with_country
  name + ', ' + country.name
end