我有一个html选择元素,使用jQuery绑定javascript更改事件。发生更改时,根据所选选项,可能会发生一些不同的事件。初始调用是通过ajax进入处理逻辑的rails控制器。
这里有三件事情可以做到:
出于某种原因,我不能让#3工作! Firebug向我显示正确的请求和响应标头,服务器告诉我模板正在成功呈现,但屏幕上不会显示任何内容。我已经走到硬编码元素ID尝试简单的渲染,但仍然没有运气。
这是我的RJS文件:
# IF A BUTTON DOES NOT ALREADY EXIST
page << "if($('<%= @button_id.to_s %>').length < 1){"
# GENERATE THE ID OF THE DIV ELEMENT THAT I NEED TO ADD ELEMENTS AFTER
field_type_selector = '#q_'+@q_id.to_s+'_field_type_div';
# AFTER THE DIV HOLDING THE SELECT ELEMENT, RENDER THE PARTIAL THAT ADDS SOME OPTIONS AND A BUTTON
page[field_type_selector].after(render(:partial=>'question_builder/add_option_button_during_edit'))
# IF THE BUTTON IS ALREADY THERE
page << "}else{"
# ENABLE THE ELEMENTS THAT WERE PREVIOUSLY DISABLED
page[@choices_div + " :input"].removeAttr('disabled')
page[@choices_div].removeClass('disabled')
page << "}"`
我尝试过对元素ID进行硬编码,渲染简单的“hello world”部分等等,并且无法弄清楚问题源于何处。同时,使用控制台我可以很容易地将元素添加到同一部分:$('#element_id')。after(“你好,世界。
)
除了firebug控制台和服务器终端窗口之外还可能报告哪些错误?我很难过。
答案 0 :(得分:2)
这个问题的解决方案并不明显,但现在是:
$("#field_id").after("<%= escape_javascript(render :partial=>'folder/myPartial') %>");
请注意,我必须将整个ERB块放在引号内!
答案 1 :(得分:0)
根据经验,最好在render()方法
周围使用escape_javascript所以它可以看起来:
page[field_type_selector].after(escape_javascript(render(:partial=>'question_builder/add_option_button_during_edit')))