如何将新定义的变量从js.erb传递给html.erb

时间:2013-05-30 15:12:54

标签: ruby-on-rails ajax

我有一个控制器方法,它传递整数变量或整数变量数组。我必须在我的.js.erb文件中查看以使用适当的整数重新分配td s。如何获取数组当前对象的值并将其传递给html.erb进行渲染?

这是.js.erb文件:

<% if @pos_range %>
    <% @pos_range.each do |p|%>
        $("td#add_bar_<%= p %>").replaceWith("<%= escape_javascript(render(:partial => 'foos/update_bar_position', :locals => { :id => @foo.id, :position_str => @position_str } ))%>");
        $("td#add_bar_button_<%= p %>").replaceWith("<%= escape_javascript(render(:partial => 'foos/update_bar_position_button', :locals => { :id => @foo.id, :position_str => @position_str } ))%>");
    <% end %>
<% else %>
    $("td#add_bar_<%= @position %>").replaceWith("<%= escape_javascript(render(:partial => 'foos/update_bar_position', :locals => { :id => @foo.id, :position_str => @position_str } ))%>");
    $("td#add_bar_button_<%= @position %>").replaceWith("<%= escape_javascript(render(:partial => 'foos/update_bar_position_button', :locals => { :id => @foo.id, :position_str => @position_str } ))%>");
<% end %>

这是update_bar_position。如果使用循环,p会导致新的td被命名为'remove_name _':

<% if @position %>
    <td id=<%="remove_name_#{@position.to_s}"%>>
        <%= @position_str %>&nbsp;
    </td>
<% else %>
    <td id=<%="remove_name_#{p.to_s}"%>>
        <%= @position_str %>&nbsp;
    </td>
<% end %>

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

使用each_with_index

<% if @pos_range %>
<% @pos_range.each_with_index do |p, i|%>
    $("td#add_bar_<%= p %>").replaceWith("<%= escape_javascript(render(:partial => 'foos/update_bar_position', :locals => { :id => @foo.id, :position_str => @position_str, :index => i } ))%>");
    $("td#add_bar_button_<%= p %>").replaceWith("<%= escape_javascript(render(:partial => 'foos/update_bar_position_button', :locals => { :id => @foo.id, :position_str => @position_str } ))%>");
<% end %>

在.html.erb文件中,您可以访问变量'index'