我有一个"食谱" has_many" Ilists"和#Il;" Ilist" has_one"成分",我试图以一种形式提交所有内容,但我遇到了强参数问题。我可以提交表单,但查看我可以在POST请求中看到的控制台:
"Unpermitted parameter: ingredient_attributes"
recipes_controller.rb
class RecipesController < ApplicationController
before_action :set_recipe, only: [:show, :edit, :update, :destroy]
def index
@recipes = Recipe.all
end
def create
@recipe = Recipe.new
6.times { @recipe.ilists.build }
end
.
.
private
def recipe_params
params.require(:recipe).permit(:title, :photo, ... , :description, :calories, ilists_attributes: [ :ingredient_attributes, :quantity])
end
end
我尝试这样写,但它不起作用:
, ilists_attributes: [ ingredient_attributes: [ name, calories, ... ], :quantity])
请帮助这个杀了我!
这是我提交的表格
<%= f.fields_for :ilists do |builder| %>
<tr>
<%= builder.fields_for :ingredient, Ingredient.new do |b| %>
<td><%= b.collection_select(:_id, Ingredient.all, :id, :name) %></td>
<% end %>
<td><%= builder.text_field :quantity %></td>
</tr>
答案 0 :(得分:1)
你关闭了。这里只需遵循几条规则。
以下是正确的强对手声明
def recipe_params
params.require(:recipe).permit(:name , ilists_attributes: [ :quantity, ingredients_attributes: [ :name, :calories ]])
end
答案 1 :(得分:0)
我在其他地方找到了解决方案我只需要将成分属性交换到另一面。
, ilists_attributes: [ :quantity, ingredient_attributes: [ name, calories, ... ] ])