我有一个通用的表视图,可以为不同的控制器视图模板呈现单个表。活动记录对象存储为“记录”。我想知道如何访问记录的网址助手,例如post_path(post)
不知道记录是什么:
# views/generic_helpers/_table.html.erb
<tbody>
<% table.collection.each do |record| %>
<tr>
<% table.columns.each do |column| %>
<%= column.value(record) %>
<% end %>
</tr>
<% end %>
<% if table.can_edit? %>
<tr>
<%= link_to "Edit", record_path(record) %>
</tr>
<% end %>
</tbody>
记录可以是Post活动记录对象,User活动记录对象等。所以我说“record_path”,它应该是“user_path”,“post_path”等,具体取决于活动记录对象。我怎样才能做到这一点?
答案 0 :(得分:1)
Rails将尝试从ActiveRecord对象的类型推断出路由,因此您可以完全避免使用_url或_path助手。假设您为:posts:
定义了路由resources :posts
然后您可以执行以下操作:
link_to "Show, @post
link_to "Edit", [:edit, @post]
所以,一般来说:
link_to "Show", record
link "Edit", [:edit, record]