Итерация по массиву, переданному от контроллера

0

Я использую Ruby on Rails.

Вот мой код для представления, где я делаю сообщение для контроллера, передавая параметр "tplangroup.id":

             <div id="collapse">
                 <%= form_tag(tplans_collapse_tplans_path, :method => 'post', :remote => true ) do %>
                    <%= hidden_field_tag(:tplangroup_id, tplangroup.id) %>
                 <% end %>
              </div>

Вот мой код на конце контроллера, где он анализирует необходимые данные и отстреливает массив "@ordered_tplans",

             def collapse_tplans
               @collapsed_tplangroup = Tplangroup.find(params[:tplangroup_id])
               tplans_from_tplangroup = @collapsed_tplangroup.tplans
               @ordered_tplans = tplans_from_tplangroup.order("favrank DESC")

               return @ordered_tplans
              end

Поскольку я вызывал: remote => true в исходной форме, расположенной в представлении, он передает этот массив в файл с именем "collapse_tplans.js"

Мой вопрос: какой лучший способ/практика для синтаксического анализа через этот массив теперь передается в файл js и отображать его содержимое в представлении? Я использую код rails в файле js для управления объектом? Или я делаю все это в javascript/jquery? Какова наилучшая практика, и можете ли вы представить какой-либо пример?

Благодарю!

Теги:
arrays

2 ответа

1
Лучший ответ

На самом деле это зависит от того, как вы хотите это сделать, как и со всем кодом, есть много способов скинуть кошку. Я считаю, что самый простой способ - использовать возвращаемый ujs в качестве файла erb (collapse_tplans.js.erb), а оттуда выбрать элемент на странице, к которому вы хотите привязать перенастроенный объект, и вызвать стандартную часть erb или haml, где ваши итерации можно сделать четко.

например

В collapse_tplans.js.erb

$('#my_wacky_element').append("<%= j render(:partial => 'collapse_tplans', :locals => { :ordered_tplans => @ordered_tplans }) %>");

Затем в _collapse_tplans.html.erb

<ul>
  <%= ordered_tplans.each do |tplan| %>
    <li><%= tplan.attribute %></li>
  • 0
    это работает, спасибо!
0

Вот RailsCast о том, как передавать данные в js из рельсов: http://railscasts.com/episodes/324-passing-data-to-javascript?view=asciicast

Ещё вопросы

Сообщество Overcoder
Наверх
Меню