无法通过另一个模型访问强参数。 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
.
出于某种原因,我无法从另一个模型访问参数。我在我的代码中使用 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
.