无法通过其他模型访问强Params。 Rails 4

时间:2015-05-21 20:14:13

标签: ruby-on-rails ruby ruby-on-rails-4 nested associations

出于某种原因,我无法从另一个模型访问param。我在我的代码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>

显示此错误:

  

未初始化的常量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。但我不知道如何解决它。

非常感谢!

1 个答案:

答案 0 :(得分:3)

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

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

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

2)写@bond.user.name