从文件 soul.html.erb ,在页面加载时调用的部分视图
<%= render 'contact_options_soul_d' %>
在档案 contact_options_soul_d.html.erb 部分视图如下所示 -
<div id="contact-option">
<div id= 'un-authenticated' data-access-api-result = <%= @valid_ticket %> %></div>
</div>
单击按钮时,控制器中发生Rest调用,partial_create.js.erb调用局部视图
def partial_create
respond_to do |format|
format.js
end
return
end
文件partial_create.js.erb
$('#contact-option').html('<%= escape_javascript(render :partial => 'rhythm/contact_options_soul_d') %>')
我的问题是 - 部分视图被调用,断点命中和@valid_ticket的新值也被更新,但是视图没有得到更新,因为即使在更新后网页仍然看起来相同。(在浏览器检查中查看后视图保持不变) 请帮忙!!!
答案 0 :(得分:0)
这不是你完全按照你的方式做出的答案,但是你总是可以在控制器中呈现它并将其返回到&#34; respond_to&#34;然后在Ajax成功时使用返回的值替换html:
def partial_create
html = (render_to_string partial: 'rhythm/contact_options_soul_d', locals: { if_you_need: variables_in_partial })
respond_to do |format|
format.json { render json: { new_html: html, success: true } }
end
return
end
然后在您的JS代码上(使用jQuery):
function soul_searching(parameters) {
$.ajax({
url: "YOUR/POST/ROUTE",
type: "POST",
dataType: "json",
data: {
any_parameters: 'you_need_to_pass_to_controller'
},
success: function(data) {
$('#contact-option').html(data['new_html']);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
//DO SOMETHING
}
});
}
答案 1 :(得分:0)
您需要在下划线前加上下划线。例如: 的 _contact_options_soul_d.html.erb 强>
注意:您只需要对文件名执行此操作。您仍然可以使用
调用partial<%= render partial: 'contact_options_soul_d.html.erb' %>
如果部分位于单独的文件夹中,请确保您引用该路径。