无法通过另一个模型访问强参数。 Rails 4

Can't access strong Params through another Model. Rails 4

出于某种原因,我无法从另一个模型访问参数。我在我的代码中使用 has_many :through 关联。我使用 rails 4.2.

这是我的代码:

/models/company.rb

class Company < ActiveRecord::Base
  has_many :bonds
  has_many :users, :through => :bonds
end

/models/user.rb

class User < ActiveRecord::Base
  has_many :bonds
  has_many :companies, :through => :bonds
end

/models/bond.rb

class Bond < ActiveRecord::Base
  belongs_to :companies
  belongs_to :users
end

/config/routes.rb

  resources :bonds
  resources :users
  resources :companies

我做了一个简单的表格,我可以通过选择名称并匹配它们来在公司和用户之间建立联系。它工作正常。这是代码:

/views/bonds/_form.html.erb

<%= form_for(@bond) do |f| %>

  <div class="field">
    <%= f.select :users_id, User.all.collect { |p| [ p.name, p.id ] } %>
  </div>
  <div class="field">
    <%= f.select :companies_id, Company.all.collect { |p| [ p.name, p.id ] } %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

这是停止工作的代码:/views/bonds/show.html.erb

<p>
  <strong>User:</strong>
  <%= @bond.users.name %> 
</p>

<p>
  <strong>Company:</strong>
  <%= @bond.companies.name %>
</p>

显示此错误:

uninitialized constant Bond::Users

但是,如果我将 /views/bonds/show.html.erb 更改为此,它就可以正常工作。

<p>
  <strong>User:</strong>
  <%= @bond.users_id %>
</p>

<p>
  <strong>Company:</strong>
  <%= @bond.companies_id %>
</p>

也许有人可以帮忙?我想这可能是因为我无法从其他型号访问 strong params。但我不知道如何解决。

无论如何谢谢!

要查看与 @bond 关联的用户名,您需要:

1) 将 belongs_to :bonds 更改为 belongs_to :bond(注意它是 belongs_to 关联类型的单数);

2) 将 bonds table 中的 users_id 列重命名为 user_id;

2) 写入@bond.user.name.