【发布时间】:2018-03-05 05:14:02
【问题描述】:
我有 2 个模型。膳食和食物。一顿饭可以有很多食物,一个食物可以是很多餐的一部分。他们有一个多对多的关联,由 has_many :through 完成。连接模型称为 MealFood,连接表称为 meal_foods。 创建餐点时,您可以根据需要添加任意数量的食物。有一个 jQuery 按钮,当您单击它时,它会自动在表单中附加一个新输入,然后您在那里输入食物。 如何使膳食的编辑视图显示与实际存在的食物名称一样多的输入字段。
膳食控制员:
def create
@meal = current_user.meals.new(meal_params)
if @meal.save
@meal.update(total_calories: @meal.calc_total_calories, total_carbohydrates: @meal.calc_total_carbohydrates, total_proteins: @meal.calc_total_proteins, total_fat: @meal.calc_total_fat)
redirect_to @meal
else
render 'new'
end
end
def edit
@meal = Meal.find(params[:id])
end
def update
if @meal.update(meal_params)
@meal.update(total_calories: @meal.calc_total_calories,
total_carbohydrates: @meal.calc_total_carbohydrates,
total_proteins: @meal.calc_total_proteins,
total_fat: @meal.calc_total_fat)
redirect_to @meal
else
render 'edit'
end
end
膳食视图(创建操作):
<%= form_for(@meal) do |f| %>
<div class="field">
<%= f.label :meal_type %>
<%= f.select :meal_type, ["Breakfast", "Lunch", "Dinner", "Morning Snack", "Afternoon Snack", "Evening Snack"] %>
</div>
<div class="field">
<label class="input-dropdown">Food Item #1</label>
<%= select_tag "meal[food_ids][]", options_from_collection_for_select(Food.all, "id", "name") %>
</div>
<div class="field submit">
<%= f.submit class: "button button-highlight button-block" %>
</div>
<% end %>
提前致谢!
【问题讨论】:
-
也许在这里使用多选会更好?有一个很好的插件 - select2 - github.com/argerim/select2-rails
-
试试这个cocoon gem
标签: ruby-on-rails database forms model-view-controller has-many-through