rails3-jquery-autocomplete:在结果列表中显示图像?

时间:2011-10-29 20:28:43

标签: ruby-on-rails model ruby-on-rails-3.1 gem jquery-autocomplete

我正在使用找到的rails3-jquery-autocomplete gem here.我正在查询用户表,并希望下拉列表显示该名称旁边的用户个人资料图片。我有一个User模型和一个多态Image模型。每个用户:has_one图片。在图像模型中,我使用回形针附加图像,在模型中称为pic

文档中的rails3-jquery-autocomplete gem表示我可以在控制器中指定:display_value。我正在使用这种技术,它工作正常;也就是说,我有一个返回值的自定义方法,并且它被正确返回。根据gem的正确设置,该自定义方法在User模型中。我想要做的是返回用户图像的:tiny版本,并将其显示在下拉列表中名称的左侧。以下显示方法可以正常工作:

def autocomplete_list_display
    "#{full_name}"
end

我尝试执行以下操作:

def autocomplete_list_display
    i = self.image
    "#{image_tag(i.pic(:tiny))}" + " #{full_name}"
end

我收到错误

NoMethodError (undefined method 'image_tag' for #<User id: 4, full_name: "My Name">):

如果我遗漏image_tag()部分,则图像的网址会正确显示。我似乎无法将其显示为呈现的HTML,但是,即使使用.html_safe方法也是如此。注意,我也尝试了以下内容,但它没有呈现为HTML:

def autocomplete_list_display
    i = self.image
    "<img src='#{i.pic(:tiny)}' />"
end

如何编写:display_value...方法,允许我在结果中嵌入HTML并在名称旁边显示用户图像?这可以通过该方法完成,还是必须在javascript中完成? (在后一种情况下,如何修改.js文件以显示图像?)

1 个答案:

答案 0 :(得分:2)

HTML被jQuery转义。根据{{​​3}},您可以使用the jQuery Autocomplete documentation来防止这种情况发生。

如果您在项目中包含该扩展程序,则可以为自动填充字段将autocomplete html选项设置为true:

$( ".selector" ).autocomplete({ html: true });

然后,无论您的display_value函数返回什么,都将呈现为HTML。

相关问题