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"} %>
第 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"} %>