我想从一个有一个通过关联的关联是项目和类别的选定值
class Item < ApplicationRecord
has_one :categoryship
has_one :category, through: :categoryship, dependent: :destroy
accepts_nested_attributes_for :category
end
字符串
项目编辑时
<%= f.select :category_id,
options_for_select(
Category.all.map{|rel| [rel.name, rel.id]},
@item.category_id )
%>
型
仍然没有工作,我尝试了项目编辑,并获得类别id的categoryship,但仍然没有得到选定的类别。有人能给点提示吗
def edit
@categoryship = @item.categoryship
@category = @categoryship.where(category_id: category_id)
end
型
2条答案
按热度按时间rqenqsqc1#
所以,在你看来,你有
@item.category_id
,但根据你的模型,fkey应该在categoryships
中,而不是在items
中。然后在你的控制器代码中,你似乎更接近了,首先你抓住了
@categoryship = @item.categoryship
,这很好,因为现在在你的视图中你可以使用@categoryship.category_id
!@category = @categoryship.where(category_id: category_id)
丢失。我假设在Categoryship
中你有一个belongs_to :category
,所以在你的控制器中你应该只有@category = @categoryship.category
。希望这能有所帮助,或者您可以看到您确实需要在这里添加更多代码,以便我们可以理解您正在尝试做什么。
ljsrvy3e2#
1.选择一个测试框架并使用它。
1.学会爱调试器。
最后:以下任何一个都应该起作用:
字符串
如果他们没有,那么你的关系或数据库中就有问题了。没有更多信息很难判断是哪一个。
您要做的是在edit方法中的某处设置一个断点(调试器),然后查看数据库。
@item是否为nil?这就是你的问题@item.categoryship是否为nil?如果是这样,那就是你的问题了。是因为数据库中没有还是因为连接错误?等等