Rails 3.1: Как получить доступ к `page '(JavaScriptGenerator) в ответе ajax js - PullRequest
0 голосов
/ 05 января 2012

Я пытаюсь заменить HTML на текущей странице приложения rails.

У меня есть кнопка с :remote => true и format.js в блоке response_to моего метода line_items_controller # create:

respond_to do |format|
    if @line_item.save
        format.html { redirect_to store_url }
        format.js
        format.json { render json: @line_item, status: :created, location: @line_item }
    else
        format.html { render action: "new" }
        format.json { render json: @line_item.errors, status: :unprocessable_entity }
    end
end

Я создал файл app/views/line_items/create.js.erb со следующей строкой it it:

<%= page.replace_html('cart', render(@cart)) %>

Однако, когда я нажимаю на кнопку и вижу, что возвращается с сервера в цветной версии Firebug, я получаю это:

NameError in Line_items#create

Showing /home/hamstar/Development/railsbook/depot/app/views/line_items/create.js.erb where line #1 raised:

undefined local variable or method `page' for #<#<Class:0x007f08583aea50>:0x007f085839acd0>
Extracted source (around line #1):

1: <%= page.replace_html('cart', render(@cart)) %>

Итак, этот объект страницы является правильным для JavaScriptGenerator? Как я могу получить доступ к этому объекту в файле create.js.erb? Нужно ли инициализировать его методом #create?

Кажется, что каждый ресурс, на который я смотрел, будет работать. Есть идеи?

1 Ответ

0 голосов
/ 06 января 2012

RJS пропал: http://techoctave.com/c7/posts/49-rails-3-1-and-the-jquery-effect

Так что я думаю, что объект JavascriptGenerator страницы был генератором прототипов, принадлежащим RJS.

См. Также: Rails 3.1 и 3.0 Разница синтаксиса AJAX,Эквивалентное утверждение в jQuery?

Нужно использовать это сейчас:

$('#cart').html("<%= escape_javascript(render(@cart)) %>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...