在Rails中的DB中插入记录时没有保存数据

时间:2017-03-05 22:25:49

标签: ruby-on-rails

我是Ruby On Rails完全初学者,我正在编写一个小应用程序,当我尝试向表中添加新记录时,我陷入困境。我的问题是没有数据被保存。

表结构是:

create_table "committees", force: :cascade do |t|
t.string   "name",        limit: 50
t.text     "description"
t.datetime "created_at",             null: false
t.datetime "updated_at",             null: false
end

" new"的代码和"创造"操作是:

def new
  @committee = Committee.new
end

def create
  @committee = Committee.new(committee_params)

  if @committee.save
    redirect_to(committees_path)
  else
    render("new")
  end
end

private

def committee_params
  params.require(:name).permit(:description)
end

观点是:

<%= link_to("<< Back to List", committees_path, :class => "back-link") %>

<div>
    <h2>Create Committee</h2>
    <%= form_for(@committee) do |f| %>
        <table>
            <tr>
                <td>Name</td>
                <td><%= f.text_field(:name) %></td>
            </tr>
            <tr>
                <td>Description</td>
                <td><%= f.text_field(:description) %></td>
            </tr>
        </table>

        <div>
            <%= f.submit("Create Committee") %>
        </div>
    <% end %>
</div>

我知道没有数据被保存,因为我改变了

params.require(:name).permit(:description)

params.permit(:name, :description)

插入了空白记录。这两个字段都是空白的。

我非常感谢您的意见,以帮助解决我的问题。

尊敬,
豪尔赫马尔多纳多

1 个答案:

答案 0 :(得分:4)

你应该

def committee_params
  params.require(:committee).permit(:name, :description)  
end

这样做告诉你,你将接受params哈希中的committee对象,而且你明确只接受该委员会的namedescription字段。这称为白色列出您的参数。

您可以在the rails guides中了解有关强参数和白名单的详情。