过去三天来,我一直在想出如何最好地解决此问题的方法。
我有一个Issue
模型,一个Article
模型和一个Section
模型。基本上,一个问题有很多部分,每个部分都有很多文章。 Issue
和Article
是多对多关联,并具有称为articles_issue
的联接表,该联接表也由模型ArticlesIssue
表示。每个Section
属于哪个Article
,并使用section_id
列以及该节中的顺序存储在连接表中。
现在,在编辑问题时,到目前为止,我能找到的是页面底部的所有文章(基于某些搜索条件)的列表,我们将其称为“文章抽屉”。 Issue
主体形式最初将所有可能的Section
显示为空。当您从页面底部单击Article
时,它将自动将自身附加到Section
的第一个Issue
中(使用jQuery)。然后点击某节中的任何文章,都会自动将其删除。到目前为止,这可行。使用jQuery-UI,我什至可以重新排序和更改部分。
我正在努力的是如何将其表示为表单字段,以便在您单击Update时,我可以正确地更新我的Issue
模型,该模型将包含每篇文章的假设部分和顺序。内。
现在,在节中添加的每篇文章都有一个<input type="hidden">
字段。如果名称是articles[]
,而值是商品ID,则可以正确地给我一个商品ID数组,然后可以简单地设置issue.articles = Article.where(id: params[:article_ids])
。此方法有效,但是它同时忽略了Section
和order
。
我尝试将data
属性添加到隐藏字段中,但是后来我意识到这主要是针对JavaScript,并且没有任何数据值作为参数传递给控制器。除非我缺少任何东西。我的第二个想法是将隐藏字段的value
变成一个存储ID,Section和Order的JSON对象,但这似乎很丑陋和错误。
我认为我为此付出很大努力的原因是我无法弄清楚如何在网上搜索类似的内容。我所有的尝试都徒劳无功。
任何帮助将不胜感激。