0

データベースには、CompaniesとUsersの2つのテーブルがあります。すべての会社をリストした1つのリスト(表として表示)があります。次に、各行にリンクを挿入して、特定の会社の行に属するユーザーのみを表示する別のリスト(テーブルとして表示)にユーザーを移動できるようにしますか?

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

これを行うにはさまざまな方法があります。簡単なルートを追加することから始めることができます:

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 に答える
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 に答える