page.insert_html无法正确呈现部分

时间:2010-05-26 23:19:48

标签: ruby-on-rails partial-views rjs

以下是text_field。

= 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 个答案:

答案 0 :(得分:2)

如果指定要更新的元素,则假定您的操作将返回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'