画像のジャンク スペースをハックニーで修正しました。:after_update_element => "trimSelectedItem"
のオプション ハッシュにa を追加しましたmodel_auto_completer
(指定された 3 つのハッシュの最初のハッシュです)。次にtrimSelectedItem
、適切なサブ要素を見つけて、その内容を要素値として使用します。
function trimSelectedItem(element, value, hiddenField, modelID) {
var span = value.down('span.display-text')
console.log(span)
var text = span.innerText || span.textContent
console.log(text)
element.value = text
}
ただし、これは:allow_free_text
オプションに違反します。デフォルトでは、テキスト ボックス内のテキストがリストの「有効な」項目でない場合、テキスト ボックスがフォーカスを失うとすぐにテキストを元に戻します。:allow_free_text => true
そのため、オプション ハッシュ (ここでも最初のハッシュ) に渡して、これも無効にする必要がありました。私は本当にそれが残っていたほうがいいです。
したがって、オートコンプリートを作成するための現在の呼び出しは次のとおりです。
<%= model_auto_completer(
"line_items_info[][name]", "",
"line_items_info[][id]", "",
{:url => formatted_products_path(:js),
:after_update_element => "trimSelectedItem",
:allow_free_text => true},
{:class => 'product-selector'},
{:method => 'GET', :param_name => 'q'}) %>
そして、products/index.js.erb は次のとおりです。
<ul class='products'>
<%- for product in @products -%>
<li id="<%= dom_id(product) %>">
<%= image_tag image_product_path(product), :alt => "" %>
<span class='display-text'><%=h product.name %></span>
</li>
<%- end -%>
</ul>