【问题标题】:Reload controller variables in view在视图中重新加载控制器变量
【发布时间】:2013-07-24 19:05:03
【问题描述】:

在我正在处理的 Rails 应用程序中,我想刷新/重新加载控制器的索引方法而不刷新视图。例如,假设我有这个作为我的索引:

def index
    @title =params[:title]   
end 

还有html.erb:

<script>
function changeField() {
  var newTitle = "Alerts"
  $.ajax({
    url: 'index?title=' + newTitle,
    type: 'POST',
    contentType: 'application/json',
    data: '',
    dataType: 'script',
    headers: {
      'X-CSRF-Token': '<%= form_authenticity_token.to_s %>'
    },
  complete: function () {
    alert('<%=@title%>');
  }
  });
}
</script> 

<button type="button" onclick="changeField()"></button>

我遇到的问题是它没有在视图上重新加载@title 变量,所以我得到的是原始标题而不是新标题。

【问题讨论】:

    标签: javascript ruby-on-rails ajax json ruby-on-rails-3.2


    【解决方案1】:

    当页面加载时 alert('') 等于 alert('first value') 并且设置了新值后,javascript 代码无法重新加载。如果您查看 html 代码,您可以看到第一个值,但看不到第二个

    我认为您可以将此代码添加到您的控制器中

    respond_to do |format|
      format.html # index.html.erb
      format.js { render :json { :title => params['title'] || @title }.to_json }
    end
    

    并添加到js代码success: function(data) { alert(data['title']) }

    【讨论】:

    • 我明白你在说什么。你知道解决这个问题吗?换句话说,有没有办法重新加载变量?
    猜你喜欢
    • 2014-10-02
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多