在我正在处理的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变量,所以我得到原始标题而不是新标题。
答案 0 :(得分:1)
当页面加载时,警告('&lt;%= @ title%&gt;')等于警报('第一个值'),设置新值后,无法重新加载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']) }