Ruby on rails 如何对多个资源使用同一部分?
我正在使用表列出索引模板中从数据库记录的内容,像往常一样,最后三个表单元格用于显示、编辑和销毁对象的链接 。/users/index.html.erbRuby on rails 如何对多个资源使用同一部分?,ruby-on-rails,ruby-on-rails-4,twitter-bootstrap-3,erb,Ruby On Rails,Ruby On Rails 4,Twitter Bootstrap 3,Erb,我正在使用表列出索引模板中从数据库记录的内容,像往常一样,最后三个表单元格用于显示、编辑和销毁对象的链接 。/users/index.html.erb <table> ... <% @users.each do |user| %> <tr> ... <td><%= link_to 'Show', user %></td> <td><%=
<table>
...
<% @users.each do |user| %>
<tr>
...
<td><%= link_to 'Show', user %></td>
<td><%= link_to 'Edit', edit_user_path(user) %></td>
<td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
<td>
<%= link_to dist do %>
<span class="glyphicon glyphicon-eye-open"></span>
<% end %>
</td>
<td>
<%= link_to send("edit_#{dist}_path(#{dist})") do %>
<span class="glyphicon glyphicon-edit"></span>
<% end %>
</td>
<td>
<%= link_to dist, method: :delete, data: { confirm: 'Are you sure?' } do %>
<span class="glyphicon glyphicon-remove"></span>
<% end %>
</td>
...
...
无论如何,我试图将这些链接文本替换为一些引导程序的标志符号图标,我成功了,但它变得混乱了,所以我认为最好将其放在一个部分中,并使用一个变量与使用相同表布局的所有索引模板共享
。/shared/_editLinks.html.erb
<table>
...
<% @users.each do |user| %>
<tr>
...
<td><%= link_to 'Show', user %></td>
<td><%= link_to 'Edit', edit_user_path(user) %></td>
<td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
<td>
<%= link_to dist do %>
<span class="glyphicon glyphicon-eye-open"></span>
<% end %>
</td>
<td>
<%= link_to send("edit_#{dist}_path(#{dist})") do %>
<span class="glyphicon glyphicon-edit"></span>
<% end %>
</td>
<td>
<%= link_to dist, method: :delete, data: { confirm: 'Are you sure?' } do %>
<span class="glyphicon glyphicon-remove"></span>
<% end %>
</td>
然后,使用以下代码行在索引表中呈现分部。将资源名称作为变量传递
<%= render 'editLinks', dist: user %>
然后,第一个和最后一个链接似乎可以正常工作,但我在中间的“编辑”链接中遇到了这个错误
undefined method `edit_user_path(#<User:0x007f611ab015a8>)' for #<#<Class:0x007f611a7064d0>:0x007f611ab143b0>
未定义的方法“编辑用户路径(#)”,用于#
您能告诉我是什么原因导致此错误以及如何使其工作吗?将参数传递给以逗号分隔的路由/方法
<%= link_to send("edit_#{dist.class.name.underscore}_path", dist) do %>
方法语法导致错误的行是因为您试图将对象视为字符串 由于
\u路径
帮助程序通常是snake\u大小写
,因此可以对对象的类名使用下划线
方法,如下所示:
<%= link_to send("edit_#{dist.class.name.underscore}_path", dist) do %>
正如Deepak所指出的,您还可以提供
dist
对象作为send
的第二个参数。否则,您最终将出现类似的错误,因为您将再次将对象视为可以强制转换为字符串的值。我完全不知道“我是索引任何追索记录的表”是什么意思。请尝试dist.id
onceThanks,但这返回了相同的错误未定义方法
edit#u path'for#`ah。。将edit#{dist}_路径
更改为edit#{dist.class.name.underline}_路径