我的rails应用程序在ajax请求之后有很多客户端javascript回调,但是我无法通过路由获得正确的流量>控制器> erb文件工作。
这是一个例子,从ajax请求开始:
$(initElement).on("click", function(){
event.preventDefault();
var url = "http://localhost:3000/login";
$.ajax({
url: url,
method: "GET",
dataType: "html"
}).done(function(){
console.log("*** ajax success T ***");
displayObject.toggleSelectionLabels("show");
}).fail(function(){
console.log("*** ajax fail T ***");
});
});
routes.rb中的路线
get "/login" => "sessions#login"
会话控制器登录操作:
def login
puts "******* login " + "*" * 21
end
我期望从服务器获取的login.html.erb文件:
<% @page_title = "UserAuth | Login" %>
<div class="form-column login">
<h1>Log in</h1>
<div class="tag-edits photo-form">
<%= form_tag(:action => 'login_attempt') do %>
... edited out...
<% end %>
</div>
</div>
ajax请求对路由进行处理,返回为“success”并运行toggleSelectionLabels回调,但不显示erb内容。 ajax是否阻止了rails内的正常处理?
答案 0 :(得分:0)
正常处理是什么意思?如果要显示返回的html,可能需要执行类似
的操作$(initElement).on("click", function(){
event.preventDefault();
var url = "http://localhost:3000/login";
$.ajax({
url: url,
method: "GET",
dataType: "html"
}).success(function(response) {
// response is your html, use it to inject it into the html
// for Example
$('.main-div').html(response);
}).done(function(){
console.log("*** ajax success T ***");
displayObject.toggleSelectionLabels("show");
}).fail(function(){
console.log("*** ajax fail T ***");
});
});
请注意success
回调。当服务器的响应具有httpStatus = 200(OK)