通用视图中一般访问url helper

时间:2014-08-11 19:59:00

标签: ruby-on-rails

我有一个通用的表视图,可以为不同的控制器视图模板呈现单个表。活动记录对象存储为“记录”。我想知道如何访问记录的网址助手,例如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”等,具体取决于活动记录对象。我怎样才能做到这一点?

1 个答案:

答案 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]