Rails应用仅向数据库添加“ created_at”和“ updated_at”

时间:2018-12-09 01:46:20

标签: ruby-on-rails ruby sqlite

(使用sqlit3)

我刚刚成功完成了表单提交工作-但是,尚未提交所有字段。只有Rails的默认“ updated_at”和“ created_at”值。

代码在this帖子中。

2 个答案:

答案 0 :(得分:1)

您需要permit控制器可以用于更新/创建的属性。 在您的情况下,您需要允许字段namerecipe

在您的控制器方法中,更改如下的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,因此导致缺少参数错误消息,只需确保控制器和表单中的变量相同即可。