0

我的数据库中有 2 个表,Company & Users。我有一个列出所有公司的列表(显示为表格)。现在我想在每一行中插入一个链接,该链接可以将用户带到另一个列表(显示为表格),该列表仅显示属于特定公司行的那些用户?

Companies list

<table>
<% @companies.each do |company| %>
  <tr>
    <td><%= company.Name %></td>
    <td><%= company.addressline1 %></td>
    <td><%= company.addressline2 %></td>
    <td><%= company.City %></td>
    <td><%= company.postcode %></td>
    <td><%= company.Telephone %></td>
    <td><%= link_to 'Edit', edit_company_path(company) %></td>
    <td><%= link_to "Users", url_for(:users) %></td>  
  </tr>
<% end %>
</table>

用户列表

<table>
<% @users.each do |user| %>
  <tr>
    <td><%= user.username %></td>
    <td><%= user.email %></td>
    <td><%= UserType.find(user.user_type_id).user_type_name %></div>
    <td><%= check_box_tag(user, user.is_admin, user.is_admin) %></div>
    <td><%= check_box_tag(user, user.active_status, user.active_status) %></div>
    <td><%= link_to 'Edit',  edit_user_path(user) %></td>
  </tr>

<% 结束 %>

4

2 回答 2

0

Pinny 的答案会起作用,但如果您将用户范围限定在公司范围内,您可能需要查看嵌套资源(http://guides.rubyonrails.org/routing.html#nested-resources

您可以将您的用户资源定义为您的公司的“孩子”config/routes.rb

resources :companies do
  resources :users
end

从那时起,您的用户控制器中始终有参数 :company_id 可用,可以通过/companies/#{company_id}/users

然后,在您的控制器中,您可以限定任何用户查询公司的范围,例如:

def show
  @company = Company.find(params[:company_id])
  @user = @company.users.find(params[:id])
end
于 2012-08-15T19:20:11.517 回答
0

有多种方法可以做到这一点。您可以从添加一个简单的路线开始:

match 'companies/:company_id/users' => 'users#for_company', :as => :company_users

在你的UsersController

def for_company
  @users = Company.find(params[:company_id]).users
  render :action => :index
end

在您的公司列表视图中,将链接更改为:

<td><%= link_to "Users", company_users_path(company) %></td>

一旦你把它准备好并开始工作,你可能需要考虑其他方法来设置路线。例如,您可能希望users成为companies. 有关这方面的更多信息,请参见此处

于 2012-08-15T18:21:55.163 回答