我是Ruby on Rails的新手。我正在构建一个用于学习目的的基本应用程序。
我构建了一个表单,当我使用“保存”按钮时,会创建一条记录,但它只是一个只有Id的空记录。
我希望有人可以帮助我。
的routes.rb
Rails.application.routes.draw do
get 'welcome/index'
resources :relaties
root 'welcome#index'
new.html.erb
<h1>Nieuwe Relatie</h1>
<%= form_for :relatie, url: "/relaties" do |f| %>
<p>
<%= f.label :naam %><br>
<%= f.text_field :naam %>
</p>
<p>
<%= f.label :straatnaam %><br>
<%= f.text_field :straatnaam %>
</p>
<p>
<%= f.label :huisnummer %><br>
<%= f.text_field :huisnunmmer %>
</p>
<p>
<%= f.label :postcode %><br>
<%= f.text_field :postcode %>
</p>
<p>
<%= f.label :plaats %><br>
<%= f.text_field :plaats %>
</p>
<p>
<%= f.label :omschrijving %><br>
<%= f.text_area :omschrijving %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
relaties_controller.rb
class RelatiesController < ApplicationController
def new
@relatie = Relatie.new
end
def create
@relatie = Relatie.new(params[:relatie])
@relatie.save
redirect_to(@relatie)
end
private
def relatie_params
params.require(:relatie).permit(:naam, :straatnaam, :huisnummer, :postcode, :plaats, :omschrijving)
end
def show
@relatie = Relatie.find(params[:id])
end
end
答案 0 :(得分:2)
在创建/更新记录时,您应该将要保存在数据库中的属性列入白名单。您已经添加了一个名为relatie_params
的方法,但是您没有在代码中使用它,这就是为什么当您尝试创建新的Relatie
记录时,没有任何属性存储在数据库中,因为它们是没有列入白名单。
在create
操作中,替换
@relatie = Relatie.new(params[:relatie])
与
@relatie = Relatie.new(relatie_params)
供您参考,请参阅Rails 4