1

私はrails3-jquery-autocompleteの宝石を見つけました。here.私はユーザーのテーブルに質問しています。名前の横にユーザーのプロフィール画像が表示されるようにドロップダウンします。私はUserモデルと多形モデルImageを持っています。各ユーザ:has_oneイメージ。画像モデルでは、ペーパークリップを使用して画像を添付しています。モデルではpicと呼ばれています。rails3-jquery-autocomplete:結果リストに画像を表示しますか?

ドキュメントのrails3-jquery-autocomplete gemは、コントローラに:display_valueと指定することができます。私はこのテクニックを使用しています。つまり、値を返すためのカスタムメソッドがあり、正しく返されます。そのカスタムメソッドは、宝石の適切な設定に従ってユーザーモデルにあります。私がしたいのは、ユーザーの画像の:tinyバージョンを返し、それをドロップダウンリストの名前の左側に表示することです。以下の表示方法は、正常に動作します:

def autocomplete_list_display 
    "#{full_name}" 
end 

私は次の操作を行うことを試みた:

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

私はその後、私はimage_tag()一部を省略した場合

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

というエラーが出ますが画像のURLが正しく表示されます。しかし、これを.html_safeメソッドを使ってもレンダリングされたHTMLとして表示することはできません。注、私はまた、次のことを試してみましたが、HTMLとしてレンダリングされませんでした:

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

私は私が結果にHTMLを埋め込み、名前の隣にユーザ画像を表示することができます:display_value...メソッドを書くにはどうすればよいですか?これはメソッドを介して行うことができますか、それともjavascriptで行う必要がありますか? (後者の場合は、画像を表示するために.jsファイルを変更するにはどうすればよいですか?)

答えて

2

HTMLはjQueryによってエスケープされます。 the jQuery Autocomplete documentationによれば、それが起こらないようにScott González' html extensionを使うことができます。あなたのDISPLAY_VALUE関数リターンがHTMLとしてレンダリングされるものは何でも、その後

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

:あなたのプロジェクトでその拡張子を含める場合

することは、あなたのオートコンプリートフィールドの真のオートコンプリートHTMLオプションを設定することができます。

関連する問題