Rails:在一个collection_select中记录两个模型

时间:2016-04-18 08:54:48

标签: ruby-on-rails-4 models collection-select

第1部分:我想要的是在一个集合中选取两个表的记录。之后,我想根据所选项目执行搜索。

到目前为止,我已经设法以这种方式在一个选择中获取记录:

控制器:

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

查看:

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

这里的问题是我想显示名称格式Model1并从Model2中键入。

第2部分如果用户选择name,我想从Model1获取记录,如果选择了type,我想从Model2获取记录。

我能够得到的是一个集合中两个模型的id选择。我没有想法。如果需要更多详细信息,请与我们联系。任何帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:1)

您已为text_method提供了:collection到collection_select的ID。检查docs以查看此帮助程序的工作原理。

一种解决方案是在每个模型中创建一个“别名”方法,然后可以在collection_select中调用:

model1.rb

class Model1
  def text_value
    name
  end
end

model2.rb

class Model2
  def text_value
    type
  end
end

为了演示目的,我将方法命名为text_value。您可能需要为该属性提供不同的名称。

顺便说一下,作为属性的类型是为Single Table Inheritance表保留的,所以最好使用不同的属性名称。

视图中的

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