Javascript 通过一个操作组合所有Ajax消息
我有一个有很多AJAX表单的网站,现在,我必须为每个表单创建一个新的js.erb视图,以便发布一条消息,该消息基本上说已完成,但每个操作都是唯一的 是否有一种方法可以将一个操作组合或转发到控制器中的消息操作,这样我就只需要一个视图来处理所有JavaScript消息 以下是我所拥有的: 控制器:Javascript 通过一个操作组合所有Ajax消息,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我有一个有很多AJAX表单的网站,现在,我必须为每个表单创建一个新的js.erb视图,以便发布一条消息,该消息基本上说已完成,但每个操作都是唯一的 是否有一种方法可以将一个操作组合或转发到控制器中的消息操作,这样我就只需要一个视图来处理所有JavaScript消息 以下是我所拥有的: 控制器: def some_action { do some things here } respond_to do |format| format.js end end 视图
def some_action
{ do some things here }
respond_to do |format|
format.js
end
end
视图:
some_action.js.erb
$('#messages').append("<%= escape_javascript(render :partial => 'flash_message') %>");
<% if @error == "True" %>
$('#flash').removeClass().addClass( "error" ).html('<%= escape_javascript(@message) %>');
<% else %>
$('#flash').removeClass().addClass( "success" ).html('<%= escape_javascript(@message) %>');
<% end %>
$(“#消息”).append(“'flash#u消息”)%>”;
$('#flash').removeClass().addClass(“error”).html(“”);
$('#flash').removeClass().addClass(“success”).html(“”);
希望在控制器中有一个操作来控制所有消息,而不需要进行其他更改。您可以将该功能抽象为实例方法,类似这样
def ajax_success(message)
@message = message
render 'ajax/success'
end
def ajax_failure(message)
@message = message
render 'ajax/failure'
end
然后在你的控制器里
def update
if (successful)
ajax_success
else
ajax_failure
end
end
您可以在应用程序控制器
中定义它们,也可以在您希望使用它们的任何控制器中包含的模块中定义它们
当您希望有响应多种内容类型的操作时,这里会出现一些问题,但是对于只响应.js
的操作,这应该可以
另外,我认为像这样的AJAX响应的标准实践是返回一条JSON消息,然后使用一些javascript函数对其进行解码并适当地转换页面