我正在使用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 =&gt;如果位于视图中的原始形式为true,则会将此数组传递给名为“collapse_tplans.js”的文件
我的问题是:解析现在传递给js文件的数组并在视图中显示其内容的最佳方法/做法是什么?我是否在js文件中使用rails代码来操作对象?或者我在javascript / jquery中完成所有操作?什么是最佳实践,您能提供任何示例吗?
谢谢!
答案 0 :(得分:1)
真的有点依赖于你想要的方式,就像所有的代码一样,有很多方法可以让猫皮肤。我发现最简单的方法是将返回的ujs用作erb文件(collapse_tplans.js.erb
),然后从那里选择要将重新调整的对象附加到页面上的元素,并调用标准的erb或haml partial你的迭代可以清楚地完成。
e.g。
在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>
答案 1 :(得分:0)
以下是关于如何从rails将数据传递给js的RailsCast: http://railscasts.com/episodes/324-passing-data-to-javascript?view=asciicast