答案 0 :(得分:1)
您需要permit
控制器可以用于更新/创建的属性。
在您的情况下,您需要允许字段name
和recipe
。
在您的控制器方法中,更改如下的recipe_params :
def recipe_params
recipe_params = params.require(:recipe).permit(:name,:recipe)
end
并在您的create
方法中,调用方法recipe_params
,而不是直接使用params[:recipe]
来创建。
即:
def create
@recipe = Recipe.create(recipe_params)
if @recipe.save
redirect_to recipe_new_path
else
reload_page
end
end
这应该有效。
答案 1 :(得分:0)
将此添加到配方控制器
def recipe_params
recipe_params = params.require(:recipe).permit(:name,:recipe)
end
此方法允许您选择要添加的参数
照常创建动作
def create
@recipe = Recipe.create(recipe_params)
if @recipe.save
redirect_to recipe_new_path
else
reload_page
end
end
然后您的表单应如下所示,请注意:recipe
符号
<%= form_for :recipe do |f| %>
<%= f.label :name, "Recipe Name:" %>
<%= f.text_field :name %>
<br>
<%= f.label :recipe, "Recipe Description:" %>
<%= f.text_field :recipe %>
<br>
<%= f.submit %>
<% end %>
请注意,您的表单中使用的是@recipe而不是:recipe
,因此导致缺少参数错误消息,只需确保控制器和表单中的变量相同即可。