Rails: 两个模型合二为一的记录collection_select

Rails: Records of two models in one collection_select

第 1 部分: 我想要的是获取一个集合中两个表的记录 select。稍后,我想根据 selected 项目执行搜索。

到目前为止,我已经设法以这种方式一次获得记录 select:

控制器:

@result1 = Model1.all
@result2 = Model2.all
@all = @result2 | @result1

查看:

<%= collection_select :id,:id,@all, :id, :id,{prompt: "All Templates"} %>

这里的问题是我想显示 Model1 的名称和 Model2 的类型。

第 2 部分 如果用户 select 是 name,我想从 Model1 获取记录,如果 type 是 selected,我想从 Model2 中获取记录。

我所能得到的只是一个集合 select 中两个模型的 id。我没主意了。让我知道是否需要更多详细信息。任何帮助表示赞赏。谢谢。

您已经为 text_method 向 collection_select 提供了 :id。检查 docs 以了解此助手的工作原理。

一个解决方案是在每个模型中创建一个 'alias' 方法,然后您可以在 collection_select:

中调用该方法

model1.rb

class Model1
  def text_value
    name
  end
end

model2.rb

class Model2
  def text_value
    type
  end
end

出于演示目的,我已将该方法命名为 text_value。您可能需要为该属性起一个不同的名称。

顺便说一下,type 作为属性是为 Single Table Inheritance 表保留的,因此最好使用不同的属性名称。

在视图中

<%= collection_select :id,:id, @all, :id, :text_value, {prompt: "All Templates"} %>