我正在尝试使用form_for在rails中创建一个新对象。由于某种原因,我无法将对象保存到数据库中。见下文
模型:
class Property < ActiveRecord::Base
has_many :units
end
视图: new.html.erb
<form>
<div class="form-group">
<div class = "row">
<div class="col-md-8">
<%= form_for (@property) do |f| %>
<%= f.label :property_name %>
<%= f.text_field :property_name, class: 'form-control', placeholder:"Please enter property name here" %><br/>
<%= f.label :property_address %>
<%= f.text_field :property_address, class: 'form-control' %><br/>
</div>
</div>
</div>
<%= f.submit "Add Building"%>
<% end %>
</form>
控制器:
def new
@property = Property.new
end
def create
@property = Property.new(property_params)
if @property.save
flash[:success] = "Property created"
redirect_to root_path
else
flash[:error] = "Property was not created"
render new_property_path
end
end
private
def property_params
params.require(:property).permit(:property_name, :property_address)
end
这是它产生的参数
Parameters: {"utf8"=>"✓", "authenticity_token"=>"VNad0+BD6TAavWiSCSX12Ob6ilU+DrzDv0O/d++af1+s6BtQkC2hKUUINaPXhk1hWA5Qfa6JV0RwkpAlx8IwKg==", "property"=>{"property_name"=>"test 934", "property_address"=>""}, "commit"=>"Add Building"}
答案 0 :(得分:1)
您的视图中似乎有一个额外的FORM标记。表单不能嵌套在HTML中。在您的视图中,您应该删除此表单
<form>
<div class="form-group">
..
..
</form>
此块将生成带有操作和方法集的表单。因此,如果你删除这个额外的东西应该可以工作。
<%= form_for (@property) do |f| %>
将生成表单方法=&#39; post&#39;行动=&#39; /属性&#39;
希望有所帮助