Rails - 基于对象值的link_to路径

and*_*nix 1 ruby-on-rails

我在索引视图中有一个User对象列表.对于每个用户,我显示一个带有link_to调用的名称,用于编辑用户,如下所示:

<% @users.each do |u| %>
  <%= link_to u.name, edit_user_path(u) %><br/>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我想根据用户的角色属性(例如员工,经理等)使用不同的编辑路径.我在路线上有edit_employee_path,edit_manager_path等等.

动态确定第二个参数的最佳方法是link_to什么?我可以用一堆丑陋的if/else代码破解它,但我想用最惯用的Rails方式来做.

Abi*_*bid 5

如何帮助方法

在您的可能users_helper或您选择的任何其他帮助

def edit_path_by_type(user)
   user.role == "Employee" ? edit_employee_path(user) : edit_manager_path(user)
end
Run Code Online (Sandbox Code Playgroud)

并在你看来

<%= link_to u.name, edit_path_by_type(u) %>
Run Code Online (Sandbox Code Playgroud)