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 文件并在视图中显示其内容的最佳方法/实践是什么?我是否在 js 文件中使用 rails 代码来操作对象?还是我全部在 javascript/jquery 中完成?最佳实践是什么,您能否提供任何示例?

谢谢!

4

2 回答 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>
于 2013-09-30T23:11:35.170 回答
0

这是关于如何从 Rails 向 js 传递数据的 RailsCast: http ://railscasts.com/episodes/324-passing-data-to-javascript?view=asciicast

于 2013-09-30T23:05:54.353 回答