Ajax请求不返回erb文件

时间:2015-10-18 20:37:26

标签: javascript ruby-on-rails ajax

我的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内的正常处理?

1 个答案:

答案 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)

时调用它