使用带有Rails嵌套对象表单的select字段

时间:2009-09-24 11:20:08

标签: ruby-on-rails

是否可以将select字段与Rails 2.3的nested object forms功能结合使用?

示例:

假设您有文章模型,类别模型和ArticleCategories连接模型。文章has_many类别through ArticleCategories。

在我们的编辑文章表单中,您希望拥有所有可用类别的HTML select列表。用户可以选择一个或多个类别名称以分配给文章(启用多个选择)。

有很多方法可以做到这一点,但我想知道是否有一种简单的方法可以使用嵌套对象功能来完成此任务。在您的视图中,表单会是什么样的?

2 个答案:

答案 0 :(得分:2)

查看Github的嵌套表单示例:

http://github.com/alloy/complex-form-examples

我看了它已经有一段时间了,所以我不确定它是否涵盖了你想做的事情,但它是一个很好的想法/模式来源。

答案 1 :(得分:1)

假设您已经定义了模型及其关系,那么您可以这样做:

@art = Article.find(article_id)  
@art.categories # returns list of category objects this article is assigned to.

然后我通常使用http://trendwork.kmf.de/175

您需要将JavaScript文件复制到public / javascripts中,但之后您可以使用以下内容创建表单元素:

swapselect(:article,@art,:categories,Category.find(:all).map { |cat| [cat.name, cat.id] })

(我倾向于将其包装在帮助器中以使呼叫更加清洁)

一个小问题是,对于非常长的列表,它在IE6中运行有点慢,因为在js中有相当多的appendChild调用,这在IE6中是非常缓慢的

更新:道歉。这并没有真正回答你原来的问题,这个问题特别是关于Rails 2.3的功能。 swapselect选项与版本无关,不使用较新的Rails功能。