Rails3自动完成Gem - 同一ClassName和方法上的两个不同的自动完成

时间:2015-08-10 10:43:08

标签: ruby-on-rails-3 autocomplete

我成功使用了“:scopes =>”此gem的选项可返回表的行的子集。现在,我想在相同的ClassName和Method上创建一个几乎相同的自动完成,具有不同的范围,用于不同的视图。

问题是,控制器中自动完成的前两个参数是ClassName和Method,它们还创建自动完成功能的功能名称,因为它在视图和路由中使用。因此,我的两个自动填充都具有相同的名称。

我是否可以使用一种解决方法为每个类似的自动填充程序指定不同的名称?

示例代码:

autocomplete :my_class_name, :my_method, :display_value => :my_formatting_method, 
:extra_data => [:id], :scopes => [:active_and_special]

def active_and_special
    where("active = ?", true).
    where("special = ?", true).
    order("name  ASC")
end

然后再次为第二个,具有相同的类名和方法,但是范围不同。

1 个答案:

答案 0 :(得分:0)

我找到的最佳解决方法是使用" column_name"覆盖通常引用方法的命名部分 - 如下所示:

autocomplete :my_class_name, :foo, :column_name => 'my_method', 
  :display_value => :my_formatting_method, :extra_data => [:id], 
  :scopes => [:active_and_not_special]

def active_and_not_special
    where("active = ?", true).
    where("special = ?", false).
    order("name  ASC")
end

这有路线:

get 'my_class_names/autocomplete_my_class_name_foo'

原件有路线:

get 'my_class_names/autocomplete_my_class_name_my_method'

这允许我们在同一个Class和Method上生成第二个不同的自动完成,具有自己唯一的名称。
拥有一个独立的名字,而不是魔法'自动生成一个(节省1秒的打字?)可以防止这种麻烦 - 或者我错过了什么?

我会稍等一下,看看是否有人有更好的解决方案。