我有模特
class Riskfactor < ActiveRecord::Base
has_many :bodies_riskfactors
has_many :bodies, through: :bodies_riskfactors
end
class Body < ActiveRecord::Base
has_many :bodies_riskfactors
has_many :riskfactors, through: :bodies_riskfactors
end
class DisordersArticle < ActiveRecord::Base
belongs_to :disorder
belongs_to :article
end
在视图中
= form_for [:admin, @riskfactor], html: {role: "form"} do |f|
= f.select :body_ids, Body.all.collect {|x| [x.name, x.id]}, {}, :multiple => true
我在更新时遇到错误
可能出现什么问题?
Processing by Admin::RiskfactorsController#update as HTML
参数:{“utf8”=&gt;“✓”,“authenticity_token”=&gt;“CVkdBHLzLAeQ8FRFBVyonUuyn1FZAYG + X9fX / mmj + Bo =”,“riskfactor”=&gt; {“body_ids”=&gt; [“”, “1”],“位置”=&gt;“1”,“slug”=&gt;“risk-factor-2”,“name_ru”=&gt;“高血压”,“published_ru”=&gt;“否” ,“content_ru”=&gt;“”,“meta_description_ru”=&gt;“”,“meta_keywords_ru”=&gt;“”,“name_en”=&gt;“高血压”,“published_en”=&gt;“否”, “content_en”=&gt;“
高血压高血压高血压高血压高血压
users
。* FROM users
WHERE users
。id
= 1 ORDER BY users
。id
ASC LIMIT 1
Riskfactor加载(0.3ms)SELECT riskfactors
。* FROM riskfactors
WHERE riskfactors
。id
= 4 LIMIT 1
(0.1ms)BEGIN
Body Load(0.3ms)SELECT bodies
。* FROM bodies
WHERE bodies
。id
= 1 ORDER BY position LIMIT 1
身体负荷(2.6ms)选择bodies
。* FROM bodies
内部加入bodies_riskfactors
ON bodies
。id
= bodies_riskfactors
。{{1} } WHERE body_id
。bodies_riskfactors
= 4 ORDER BY位置
Riskfactor ::翻译负载(0.3ms)SELECT riskfactor_id
。* FROM riskfactor_translations
WHERE riskfactor_translations
。riskfactor_translations
= 4
Riskfactor存在(0.6ms)SELECT 1 AS一个来自riskfactor_id
WHERE(riskfactors
。riskfactors
='risk-factor-2'和slug
。riskfactors
! = 4)限制1
(0.2ms)ROLLBACK
在15毫秒内完成500内部服务器错误
NoMethodError(更新中未定义的方法id
阻止'
app / controllers / admin / riskfactors_controller.rb:44:在`update'
RiskfactorsController
body' for #<Riskfactor:0x007f9a0351c350>):
app/controllers/admin/riskfactors_controller.rb:45:in
答案 0 :(得分:0)
Imho问题是您的视图中有body_ids
,但您将关联命名为bodies
。尝试将body_ids
重命名为bodies_ids
或类似名称。