Rails Simple_form_for hidden_​​field值不正确

时间:2017-08-17 18:56:46

标签: ruby-on-rails simple-form

我的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)。

当表单实际呈现时,值是正确的: enter image description here

但是,当创建记录时,仍会使用ingredient recipe_id创建nil。关于出了什么问题的任何智慧?

2 个答案:

答案 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

通过这种方式,您不需要在视图中实例化配方。这也适用于您的编辑视图!它保持清晰!