部分视图没有点击按钮红宝石轨道更新

时间:2017-06-18 05:15:29

标签: ruby-on-rails partial-views

从文件 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的新值也被更新,但是视图没有得到更新,因为即使在更新后网页仍然看起来相同。(在浏览器检查中查看后视图保持不变) 请帮忙!!!

2 个答案:

答案 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' %>

如果部分位于单独的文件夹中,请确保您引用该路径。