Ruby on rails Rails 3:如何使用UJS将复杂的行添加到表中?

Ruby on rails Rails 3:如何使用UJS将复杂的行添加到表中?,ruby-on-rails,ruby-on-rails-3,jquery,Ruby On Rails,Ruby On Rails 3,Jquery,这是一个使用jQuery1.4.4的Rails3项目 我有一个索引操作,它在一个表中显示资源列表,并带有一个“销毁”链接,就像从脚手架上得到的一样: <tr id="showcase_item_<%= showcase_item.id %>" class="<%= cycle(' alt','') %>"> <td><%= displayable.identifier %></td> <td><%=

这是一个使用jQuery1.4.4的Rails3项目

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

<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>

“是否从您的Showcase中删除此项目?”,:method=>:delete,:remote=>true)%>
在这个索引视图中,我还有一个小表单,它为资源执行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>")
$(“#showcase tr:last”)。之后(“\
\
\
“是否从您的Showcase中删除此项目?”,:method=>:delete,:remote=>true%>)
那是易碎的、丑陋的、不干燥的。我还能怎么做呢

Rails是如何做到这一点的


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

诀窍是将表行提取到分部中(因为它被使用了两次)。然后在
js
视图中,简单地渲染部分。例如,下面是一个小片段,让您开始学习:

# _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)}');"
#_object.html.erb
循环(‘奇数’、‘偶数’)do%>
:删除%>
#index.html.erb
@对象%>
#create.js.rjs

page我认为凯文的例子中有一个小的拼写错误。 应该使用“object”变量而不是“@object”

# _object.html.erb
<%= content_tag_for(:tr, object, :class => cycle('odd','even')) do %>
 <td><%=h @object.name %></td>
 ...
#_object.html.erb
循环(‘奇数’、‘偶数’)do%>
...

我发现这将适用于erb

_create.js.erb

$('#objects')。追加(“@object”)%>”;

@AKWF不用担心。RubyonRails一旦掌握了窍门,就可以非常干净(尽管不能保证上面的代码能够真正工作)。