page.insert_html неправильно отображает частичное - PullRequest
1 голос
/ 27 мая 2010

В текстовом поле следующее.

= f.text_field :title, :size => 50, :onchange => remote_function(:update => :suggestions, :url => {:action => :display_question_search_results})

Следующее находится в display_questions_search_results.rjs.

page.insert_html :bottom, 'suggestions', :partial => 'suggestions'

Всякий раз, когда пользователь печатает, я хотел бы искать в базе данных любые кортежи, которые соответствуют ключевым словам в текстовом поле. Затем отобразите эти результаты. Но на данный момент в _suggestions.haml есть только слово «предложения !!».

Но вместо того, чтобы видеть "предложения !!" в теге suggestions div я получаю:

try { Element.insert("suggestions", { bottom: "suggestions!!" }); } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('Element.insert(\"suggestions\", { bottom: \"suggestions!!\" });'); throw e }

Я пытался выяснить, почему это делается, но ранее задаваемые вопросы, которые я нашел, кажутся более сложными, чем то, что я делаю ...

1 Ответ

2 голосов
/ 27 мая 2010

Если вы указываете элемент для обновления, предполагается, что ваше действие вернет html (не rjs / javascript), который заменит содержимое указанного элемента.

Итак, если вам нужно заменить содержимое :suggestions, просто визуализируйте частичное в вашем контроллере:

render :partial => 'suggestions'

Но если вам нужно добавить содержимое к этому элементу, а не заменить, удалите :update => :suggestions из кода вашего просмотра:

= f.text_field :title, :size => 50, :onchange => remote_function(:url => {:action => :display_question_search_results})

И оставить код контроллера как:

page.insert_html :bottom, 'suggestions', :partial => 'suggestions'
...