Рендеринг частичный на основе изменения результата - PullRequest
0 голосов
/ 22 декабря 2009

Я пытаюсь выяснить, как выполнить рендеринг по существующему отрендеренному фрагменту. Сначала немного фона:

У меня есть таблица, которая отображается на основе данных из БД. Вне моего обработанного фрагмента у меня есть различные теги выбора, которые позволяют обновлять данные в выбранном теге выбора. Я пытался сделать следующее, но безрезультатно.

<%= select "sales", "short_desc", Sales.find(:all).collect{|x| [ x.short_desc]}, {:prompt => ''},
            :onchange => remote_function(:url => {:controller => 'sales', :action => 'filterResults'},
                    :with => "'value=' + value") %>

поэтому в методе filterResults у меня есть оператор sql, который возвращает результат, и я снова попытался отобразить частичное.

render :partial => "tableReport", :locals => {:sales => @sales }

Буду признателен за любую помощь, спасибо, что нашли время, чтобы подготовить мой ответ.

Привет ~

1 Ответ

1 голос
/ 22 декабря 2009

Вы хотите использовать AJAX? Я бы использовал RJS примерно так:

В вашем контроллере:

def filterResults
    @sales = ..
    # logic
    respond_to do |format|
        format.html # renders the normal view if it's a normal request
        format.js # renders filter_results.rjs if it's an ajax request
    end 
end

Вид / продажи / filter_results.rjs

page.replace 'id_of_your_div', :partial => 'tableReport', :object => @sales

Я не тестировал код, поэтому он может потребовать некоторых изменений. Идея состоит в том, что вы вызываете filterResults с помощью ajax, и он возвращает некоторый javascript, который заменяет div (или любой другой объект с таким #id) частичным. Вы используете представление Rails API , чтобы найти больше методов для манипулирования DOM через RJS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...