Я использую 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? Какова наилучшая практика, и можете ли вы представить какой-либо пример?
Благодарю!
На самом деле это зависит от того, как вы хотите это сделать, как и со всем кодом, есть много способов скинуть кошку. Я считаю, что самый простой способ - использовать возвращаемый 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>
Вот RailsCast о том, как передавать данные в js из рельсов: http://railscasts.com/episodes/324-passing-data-to-javascript?view=asciicast