我的Rails应用程序中有以下表单:
<%= simple_form_for(@ingredient) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
...
<%= f.hidden_field :recipe, value: @recipe.id %>
</div>
<div class="form-actions text-center">
<%= f.button :submit %>
</div>
<% end %>
我在控制器中有这个:
@recipe = Recipe.find(params[:id])
@ingredient = Ingredient.new
@ingredients = Ingredient.where(user_id: current_user.id, recipe_id: @recipe.id)
我已经使用byebug测试@recipe.id
是一个数字(我正在测试的实例中为4
)。
但是,当创建记录时,仍会使用ingredient
recipe_id
创建nil
。关于出了什么问题的任何智慧?
答案 0 :(得分:1)
f.hidden_field :recipe
应为f.hidden_field :recipe_id
答案 1 :(得分:0)
如前所述,您应该使用f.hidden_field:recipe_id
但我会添加一个加号,试试这样使用:
成分控制者:
@ingredient = Ingredient.new({:recipe_id => @recipe.id})
在成分视图中:
f.hidden_field :recipe_id
通过这种方式,您不需要在视图中实例化配方。这也适用于您的编辑视图!它保持清晰!