【问题标题】:Rails 3: How can I add a complex row to a table using UJS?Rails 3:如何使用 UJS 向表中添加复杂行?
【发布时间】:2010-12-10 07:50:26
【问题描述】:

这是一个使用 jQuery 1.4.4 的 Rails 3 项目。

我有一个索引操作,可以在表格中显示资源列表,并带有一个“销毁”链接,就像您从脚手架获得的一样:

<tr id="showcase_item_<%= showcase_item.id %>" class="<%= cycle(' alt','') %>">
  <td><%= displayable.identifier %></td>
  <td><%= escape_javascript(link_to 'Remove', showcase_item, :confirm => 'Remove this item from your Showcase?', :method => :delete, :remote => true) %></td>
</tr>

在那个索引视图上,我还有一个小表单可以为资源执行 AJAX“创建”,并且我正在使用 Javascript 将资源附加到我的 create.js.erb 中的表中:

$("#showcase tr:last").after("<tr id=\"showcase_item_<%= @showcase_item.id %>\" class=\"<%= cycle(' alt','') %>\"> \
<% displayable = @showcase_item.displayable %> \
<td><%= displayable.identifier %></td> \
<td><%= link_to 'Remove', @showcase_item, :confirm => 'Remove this item from your Showcase?', :method => :delete, :remote => true %></td></tr>")

那是脆弱的、可怕的,而且不干燥。我还能怎么做?

Rails 的做法是什么?

感谢您提供的任何帮助或指导!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 jquery


    【解决方案1】:

    诀窍是将表格行提取到部分中(因为它被使用了两次)。然后在您的js 视图中,简单地渲染部分。例如,这里有一个小 sn-p 可以帮助您入门:

    # _object.html.erb
    <%= content_tag_for(:tr, @object, :class => cycle('odd','even')) do %>
     <td><%=h @object.name %></td>
     <td><%= link_to 'Remove', object_path(@object), :method => :delete %></td>
    <% end %>
    
    # index.html.erb
    <table id="objects">
      <%= render :partial => @objects %>
    </table>
    
    # create.js.rjs
    page << "$('#objects').append('#{escape_javascript(render :partial => @object)}');"
    

    【讨论】:

    • @AKWF 不用担心。一旦掌握了 Ruby on Rails 的窍门,它就会变得非常干净(尽管不能保证上面的代码确实有效)。
    【解决方案2】:

    我认为 Kevin 在他的示例中有一个小错误。 应该使用'object'变量而不是'@object'

    # _object.html.erb
    <%= content_tag_for(:tr, object, :class => cycle('odd','even')) do %>
     <td><%=h @object.name %></td>
     ...
    

    【讨论】:

      【解决方案3】:

      我发现这适用于 erb _create.js.erb

      $('#objects').append(" @object) %>");

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-20
        • 1970-01-01
        • 2014-03-18
        • 2011-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多