我是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)
插入了空白记录。这两个字段都是空白的。
我非常感谢您的意见,以帮助解决我的问题。
尊敬,
豪尔赫马尔多纳多
答案 0 :(得分:4)
你应该
def committee_params
params.require(:committee).permit(:name, :description)
end
这样做告诉你,你将接受params哈希中的committee
对象,而且你明确只接受该委员会的name
和description
字段。这称为白色列出您的参数。
您可以在the rails guides中了解有关强参数和白名单的详情。