根据先前的post,我了解如何设置表/模型,以便可以建立多对多关系
但是,我想做的是用1种形式在1页上实现所有这些功能。 (用户提交表单后,唯一会看到的页面是确认页面,可能只是显示其提交内容的详细信息)
用户仅需要能够更新任何可用餐点的数量。然后,我将在特定的日期/时间进行数据库备份,这将是一周中每个用户的命令。因此,我将表重组如下:
用户存储用户的信息。
user.rb
class User < ApplicationRecord
has_many :mealselections
has_many :meals, through: :mealselections
accepts_nested_attributes_for :mealselections
end
膳食用于向所有用户显示膳食信息。 (餐名,描述,img_url)
meal.rb
class Meal < ApplicationRecord
has_many :mealselections
has_many :users, through: :mealselections
end
MealSelection 是引用用户选择的餐点的联接表,然后在此表中添加了一个附加的整数列,表示他们每次选择餐点所需的餐点数量
mealselection.rb
class MealSelection < ApplicationRecord
belongs_to :user
belongs_to :meals
end
所以我迷路的是如何利用控制器以单一形式执行CRUD功能。当我具有一对一关系时,这才更有意义,因为我只是为相关用户更新列(meal1,meat2,meat3),并且每顿饭#列均创建为默认值0。
但是现在,由于多对多关系的工作原理,我意识到用户至少必须从同一表单创建和更新列。
由于我将其显示在一页(主页)上,因此如何通过一种表单/请求在相应的HomeController中实现此目的?
答案 0 :(得分:0)
尽管有些过时,http://railscasts.com/episodes/196-nested-model-form-revised中的内容演示了一种常见的技术,该技术涉及在用户选择使用javascript创建,删除或修改嵌套模型的字段时修改表单。该基本原理仍然很常用,因为它依赖于控制器和模型批量更新机制中的默认嵌套属性逻辑。对于强大的参数,您可能需要进行一些细微的调整,这是比内容生成时更常见的现代应用程序的一个因素。查看有关表单和控制器操作的代码也可能有助于获得更具体的答案。