对象不保存到数据库

时间:2016-06-27 01:47:15

标签: ruby-on-rails forms form-for

我正在尝试使用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"}

1 个答案:

答案 0 :(得分:1)

您的视图中似乎有一个额外的FORM标记。表单不能嵌套在HTML中。在您的视图中,您应该删除此表单

<form>
  <div class="form-group">
..
..
</form>

此块将生成带有操作和方法集的表单。因此,如果你删除这个额外的东西应该可以工作。

<%= form_for (@property) do |f| %> 

将生成表单方法=&#39; post&#39;行动=&#39; /属性&#39;

希望有所帮助