是否可以将 Javascript 和 erb 交织在一起?
Is it possible to intertwine Javascript and erb?
我很想这样做,但显然这是错误的。有什么方法可以让 ajax return 'cnut' 进入 erb?
processResults: function (data, params) {
// parse the results into the format expected by Select2
// since we are using custom formatting functions we do not need to
// alter the remote JSON data, except to indicate that infinite
// scrolling can be used
params.page = params.page || 1;
return {
results: $.map(data, function(cnut) {
<% asdf = BandRole.where(band_id: cnut.id).first %>
<% member = Fan.find(asdf.fan_id) %>
var band_member = <% member.name %>
return {
text: cnut.name + ", " + cnut.city + " (" + band_member + ")",
id: cnut.id,
};
}),
pagination: {
more: (params.page * 30) < data.total_count
}
};
},
如果你告诉 Rails 渲染 JS 而不是 JSON,你就可以。
在你的控制器中设置你的 respond_to 块,如下所示:
respond_to do |format|
format.html
format.js { render :your_view }
end
然后创建一个名为 your_view.js.erb
的视图。您可以像使用普通 HTML 视图一样使用它,除了您可以像在示例中那样将 JavaScript 和 Ruby 放入此文件中。但是,这是在响应中发送回浏览器的 JS,而不是处理响应的 JS。我希望这有帮助。
我很想这样做,但显然这是错误的。有什么方法可以让 ajax return 'cnut' 进入 erb?
processResults: function (data, params) {
// parse the results into the format expected by Select2
// since we are using custom formatting functions we do not need to
// alter the remote JSON data, except to indicate that infinite
// scrolling can be used
params.page = params.page || 1;
return {
results: $.map(data, function(cnut) {
<% asdf = BandRole.where(band_id: cnut.id).first %>
<% member = Fan.find(asdf.fan_id) %>
var band_member = <% member.name %>
return {
text: cnut.name + ", " + cnut.city + " (" + band_member + ")",
id: cnut.id,
};
}),
pagination: {
more: (params.page * 30) < data.total_count
}
};
},
如果你告诉 Rails 渲染 JS 而不是 JSON,你就可以。
在你的控制器中设置你的 respond_to 块,如下所示:
respond_to do |format|
format.html
format.js { render :your_view }
end
然后创建一个名为 your_view.js.erb
的视图。您可以像使用普通 HTML 视图一样使用它,除了您可以像在示例中那样将 JavaScript 和 Ruby 放入此文件中。但是,这是在响应中发送回浏览器的 JS,而不是处理响应的 JS。我希望这有帮助。