2012-01-24 4 views
0

У меня есть шаблон: blabla.haml и 2 макеты:Формат ответа отличается от запроса на рельсы

  1. layouts/application.js.erb
  2. layouts/application.html.haml

В контроллере я есть render 'blabla.haml' В журнале: request.xhr? # true

Так если я отправляю запрос с ajax, я все равно получаю html-ответ: text/html и layouts/appl ication.html.haml как макет

Что мне делать, чтобы получить правильный ответ js?

+0

У вас есть блок «response_to» в действии контроллера? – alony

+0

или reply_with? – jipiboily

+0

У меня нет ни одного. –

ответ

0

в контроллере вы должны иметь что-то вроде:

class UsersController < ApplicationController::Base 
    def index 
    respond_to do |format| 
    format.js { } 
    format.html {} 
    end 
    end 
end 

вы могли бы, а также реализовать его с respond_with что-то вроде:

class UsersController < ApplicationController::Base 

    respond_to :html, :xml, :json 

    def index 
    respond_with(@users = User.all) 
    end 

    def create 
    @user = User.create(params[:user]) 
    respond_with(@user, :location => users_url) 
    end 
end 

или даже в вашем АЯКС запросе, например, с JQuery ($ .ajax, $ .get, $ .post, $ .getScript и т. д.) вы можете принудительно ввести тип контента, например:

$.getScript('ajax/test.js', function(data, textStatus){ 
    console.log(data); //data returned 
    console.log(textStatus); //success 
    console.log('Load was performed.'); 

});

Смежные вопросы