由于某种原因,我无法从另一个模型访问param。我在代码has_many :through关联中使用。我使用rails 4.2。
这是我的代码:
/模型/公司.rb

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

/型号/用户.rb
class User < ActiveRecord::Base
  has_many :bonds
  has_many :companies, :through => :bonds
end

/型号/bond.rb
class Bond < ActiveRecord::Base
  belongs_to :companies
  belongs_to :users
end

/配置/路由.rb
  resources :bonds
  resources :users
  resources :companies

我做了一个简单的表格,我可以在公司和用户之间建立联系,通过选择名字和匹配他们它工作得很好代码如下:
/视图/bonds/\u 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>

显示此错误:
未初始化的常量绑定::用户
但如果我改成这个的话,效果很好。
<p>
  <strong>User:</strong>
  <%= @bond.users_id %>
</p>

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

也许有人能帮忙我想可能是因为我无法从其他模型访问/views/bonds/show.html.erb但我不知道怎么解决。
无论如何谢谢!

最佳答案

要查看与@bond关联的用户名,您可以:
1)将belongs_to :bonds更改为belongs_to :bond(注意belongs_to类型的关联是单数的);
2)将users_id表中的bonds列重命名为user_id
2)写入@bond.user.name

08-28 10:25